Php mysql\u fetch\u行未返回完整数组
我正试图用下面的代码循环MySQL中的行。不幸的是,Php mysql\u fetch\u行未返回完整数组,php,mysql,arrays,Php,Mysql,Arrays,我正试图用下面的代码循环MySQL中的行。不幸的是,mysql\u fetch\u row函数只返回我查询的第一行(我用print\r确认了这一点)。当我使用mysql\u num\u rows时,它返回该查询的正确行数(2)。知道为什么mysql\u fetch\u row只返回第一行吗 $query = 'SELECT firstName FROM profiles WHERE city="Phoenix" and lastName ="Smith"'; $result = mysql_qu
mysql\u fetch\u row
函数只返回我查询的第一行(我用print\r确认了这一点)。当我使用mysql\u num\u rows
时,它返回该查询的正确行数(2)。知道为什么mysql\u fetch\u 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”)
谢谢您的帮助。您想将其放入循环中:
while($row=mysql\u fetch\u array($result)){
$firstName=$row['firstName'];
echo($firstName
);
}
它所做的是为它找到的每个结果(行)获取并显示所需的数据。因此,它获取第一个结果,显示名称,循环返回顶部,获取第二个结果,显示该名称,依此类推,然后一旦没有更多与查询条件匹配的结果,while循环就结束了。只需执行两次(或循环)mysql\u fetch\u row。根据定义(如果您阅读文档),它一次只返回一行。因此:
while ($row = mysql_fetch_row($result)) {
var_dump($row);
}
PHP按缓冲方式的顺序访问SQL结果。您需要运行一个循环来访问所有内容 如果要将所有内容加载到阵列中:
$allRows=array();
while($row=mysql_fetch_assoc($result) {
$allRows[]=$row;
}
您可以使用以下任一选项:
while ($row = mysql_fetch_array($result))
{
echo $row['firstName'];
}
或
或
为什么要在变量名周围加上
“
?echo$firstName;
比任何东西都要短,更易于阅读。坏习惯:/我不确定说“缓冲”是不是一个好主意。结果是按照mysql返回它们的顺序访问的-这比mysql\u查询()更好函数将首先缓冲所有结果,然后再提供对PHP句柄的访问将在第一行可用时提供访问权限,然后在后续行可用时提供访问权限。这就是我所说的缓冲方式。正如我所说的,没有理由提及当前的php实现。明天它可以更改。不会更改的是以下语句“数据返回的顺序与mysql return it完全一致“感谢您的回复。忘记了mysql_fetch_row一次只返回一行。使用while循环工作得很好。如果某个特定答案为您提供了此答案,您应该将该答案标记为已接受(单击答案左侧的绿色复选框)。
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;
}