我试图使用以下代码在MySQL中循环遍历行。不幸的是,mysql_fetch_row
函数只返回我的查询的第一行(我用print_r确认了这一点)。当我使用mysql_num_rows
时,它返回该查询的正确行数(2)。知道为什么mysql_fetch_row
只返回第一行吗?
$query = 'SELECT firstName FROM profiles WHERE city="Phoenix" and lastName ="Smith"';
$result = mysql_query($query);
$row = mysql_fetch_row($result);
print_r($row); //This returns only 1 array item: Array ( [0] => John)
$a=mysql_num_rows($result);
print_r($a); //This returns 2
我也在MySQL中运行相同的查询,它返回两行(“John”和“Jim”)。
感谢您的帮助。
答案 0 :(得分:3)
只需执行mysql_fetch_row
两次(或循环)。根据定义(如果您阅读文档),它一次只返回一行。所以:
while ($row = mysql_fetch_row($result)) {
var_dump($row);
}
答案 1 :(得分:2)
您想将其置于while
循环中:
while ($row = mysql_fetch_array($result)) {
$firstName = $row['firstName'];
echo("$firstName<br />");
}
这样做对于找到的每个结果(行),它会获取您想要的数据并显示它。因此它获取第一个结果,显示名称,循环返回顶部,获取第二个结果,显示该名称等等,然后一旦您没有更多符合查询条件的结果,则while循环结束。
答案 2 :(得分:1)
PHP按照缓冲区的顺序访问SQL结果。您需要运行循环来访问所有内容。
如果您希望将所有内容加载到数组中:
$allRows=array();
while($row=mysql_fetch_assoc($result) {
$allRows[]=$row;
}
答案 3 :(得分:1)
您可以使用以下任何一项:
while ($row = mysql_fetch_array($result))
{
echo $row['firstName'];
}
或
while ($row = mysql_fetch_assoc($result))
{
echo $row['firstName'];
}
或
while ($row = mysql_fetch_object($result))
{
echo $row->firstName;
}