【发布时间】:2014-07-17 23:06:50
【问题描述】:
我有一个函数可以将查询的值保存到 PHP 数组中。我的代码看起来像这样:
if(mysqli_fetch_row($result)){
while($line = mysqli_fetch_row($result)){
foreach($line as $row => $value){
$value = mysqli_real_escape_string($conn, $value);
array_push($rows, $value);
}
}
return $rows
}
我注意到它不会保存第一行值,我调试并发现这个错误的根本原因在if(mysqli_fetch_row($result)){ 行中......基本上一旦它进入 while 循环它就开始了第二行。为了确保我没有遗漏查询中的任何数据,我将代码更改为:
$line = mysqli_fetch_row($result);
if($line){
//var_dump($line);
foreach($line as $row => $value){
$value = mysqli_real_escape_string($conn, $value);
array_push($rows, $value);
}
while($line = mysqli_fetch_row($result)){
//var_dump($line);
foreach($line as $row => $value){
$value = mysqli_real_escape_string($conn, $value);
array_push($rows, $value);
}
}
return $rows;
}
必须有一个 if 语句,因为有一个 else 子句来处理没有返回的数据。我认为我在if 语句之前的$line = mysqli_fetch_row($result); 行是正确的,但我觉得有两个foreach 循环是多余的,而且可能是不必要的。
【问题讨论】:
-
调用
mysqli_fetch_row($result)会带回第一行,这就是为什么您没有在循环中返回第一行。您可以使用mysqli_num_rows()来检查您是否返回了任何结果,如果没有则输出错误,如果有,则循环遍历结果。 -
@scrowler 我最喜欢你的回答,如果你想要代表的话,把它作为答案