Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mysql\u fetch\u行未返回完整数组_Php_Mysql_Arrays - Fatal编程技术网

Php mysql\u fetch\u行未返回完整数组

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中的行。不幸的是,
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;
}