mysql_fetch_array / row只获取1个数据

时间:2012-06-22 20:19:46

标签: php mysql

问题可能很简单。

$q = "SELECT id FROM users
        WHERE name LIKE '%$u%' OR active LIKE '%$u%'";
        echo $q;
$u = mysql_query($q) or die("There is a server error : " . mysql_error());
$u = mysql_fetch_array($u);
        print_r($u);

但它让我回头

[id] => 6

当我在Mysql Workbench中执行查询时,它返回

6
7
8

这可能是一个问题,但我不明白为什么。 谢谢:))

4 个答案:

答案 0 :(得分:1)

那是因为mysql_fetch_array只返回一行。为了获得更多行,它可以循环工作。

while ($row = mysql_fetch_array($u)) {
   print_r($row);
}

但是,请阅读关于mysql_*功能使用的评论。这一个:

  

欢迎使用Stack Overflow!请不要使用mysql_*函数   新代码。它们已不再维护,社区已经开始   deprecation process。请参阅red box?相反,您应该了解prepared statements并使用其中之一   PDOMySQLi。如果你   无法决定,this article将有助于选择。   如果您想学习,here is good PDO tutorial

答案 1 :(得分:1)

使用mysql_fetch_array($u)而不使用while循环会返回单个记录。要获取整个结果集,您需要使用带有while循环的mysql_fetch_array($u)。例如:

$q = "SELECT id FROM users WHERE name LIKE '%$u%' OR active LIKE '%$u%'";
$u = mysql_query($q) or die("There is a server error : " . mysql_error());
while($row = mysql_fetch_array($u))
{
print_r($row);
}

答案 2 :(得分:0)

mysql_fetch_array获取一行 - 您需要遍历结果集以获取其余结果。

答案 3 :(得分:0)

mysql_fetch_array()只返回一行。要获得更多行,您需要一个循环。

同样mysql_fetch_array()返回字符串关联和整数索引。 您要使用的是mysql_fetch_assoc(),如下所示:

while ($data = mysql_fetch_assoc($u)) {
   echo $data['id'];
}