2012-03-05 96 views
0

我需要选择一个整列。 所以我的问题是如何获得一整列?mysql选择整列或循环遍历所有ID

 $query = "SELECT * "; 
     $query .= "FROM employees "; 
     $query .= "WHERE id=*"; 
     $query .= "ORDER BY id ASC "; 

我试过ID = *,但没有运气... 我的目标是通过循环所有的ID,但有些可能会丢失,所以我想通我把它们放在一个数字或关联数组和使用的foreach。如果有更好的方法,请分享。

编辑:

function get_all_ids() 
    { 
     global $connection; 
     $query = "SELECT * "; 
     $query .= "FROM employees "; 
     $query_result = mysql_query ($query , $connection); 
     confirm_query($query_result); 
     $query_result_array = mysql_fetch_assoc($query_result); 
     return $query_result_array; 
    } 

我使用它来打印阵列

$all_id = get_all_ids(); 
// preparing the table; 
    echo "<pre>"; 
    print_r($table); 
    print_r($all_id); 
    echo "</pre>"; 

,这是阵列

Array 
    (
     [id] => 1 
     [department_id] => 1 
     [name] => jordan 
     [EGN] => 9108121544 
     [email] => testEmail 
     [address] => testAddress 
     [country] => testCounty 
    ) 
+0

没有运气,那只是给了我第一排。 – Jordashiro 2012-03-05 17:06:44

+0

你确定数据库中有多行吗? – prodigitalson 2012-03-05 17:07:32

+0

是的,我会在一秒内更新我的问题。 – Jordashiro 2012-03-05 17:07:58

回答

3

如果有结果集中多行,你需要不断获取数据,直到所有的结果都检索:

$q = mysql_query('SELECT * FROM `table`'); 
while (($row = mysql_fetch_assoc($q)) != FALSE) 
{ 
// Do something with *one* result 
} 
mysql_free_result($q); 

如果你想获取所有的id在单个取,你可以这样做:

$q = mysql_query('SELECT GROUP_CONCAT(`id`) AS `id_list` FROM `table`'); 
$row = mysql_fetch_assoc($q); 
mysql_free_result($q); 

$list_of_ids = explode(',', $row['id_list']); 

警告:GROUP_CONCAT()通常具有1024个字节的结果限制;这意味着你的结果将被截断为大型表格。您可以采用第一种解决方案,或者为当前连接增加group_concat_max_len

+0

所以我得到行1,并把它们放在一个assoc数组基本上。我会在 – Jordashiro 2012-03-05 17:15:46

+0

...或 - 根据结果集的大小尝试它 - 您可以使用第二种解决方案。 – 2012-03-05 17:17:24

+0

谢谢。这工作并返回所有ID。 – Jordashiro 2012-03-05 17:34:59

1

如果你想要的所有记录,那么你不需要一个WHERE条件。

1

也许你指的是简单的:

SELECT id 
FROM employees 
ORDER BY id ASC 

如果只给你一个行,那么无论你只有一个行或要添加LIMIT 1或PHP代码确实通过所有的结果不循环,但只是显示其中的第一个。请添加PHP代码。

0

如果你想选择一个列。然后不要使用“*”,为了安全起见,用逗号分隔列名的名称并用“`”(tick)引用。

$query = "SELECT `id` "; //if you only want to get ids from the table 
$query .= "FROM employees "; 
$query .= "WHERE id=*"; 
$query .= "ORDER BY id ASC ";