mysql选择整列或循环遍历所有ID

时间:2012-03-05 17:04:36

标签: php mysql

我需要选择整列。 所以我的问题是如何获得整个专栏?

        $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
    )

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

如果您想要所有记录,那么您根本不需要WHERE条件。

答案 2 :(得分:1)

也许你的意思很简单:

SELECT id
FROM employees
ORDER BY id ASC

如果这只给你一行,那么你只有一行或者你正在添加一个LIMIT 1,或者你的PHP代码没有遍历所有结果,只是显示了第一行。请添加PHP代码。

答案 3 :(得分:0)

如果要选择单个列。然后不要使用“*”,给出用逗号分隔的列名的名称,并用“`”(勾号)引用以确保安全。

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