我有一个将查询值保存到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
}
我注意到它不会保存第一行值,我调试并发现这个bug的根本原因在于行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子句来处理没有返回的数据。我想我在$line = mysqli_fetch_row($result);
语句之前使用if
行在正确的路径上,但我觉得有两个foreach循环是多余的,可能是不必要的。
答案 0 :(得分:0)
这个怎么样?
if($line = mysqli_fetch_row($result)){
while($line){
foreach($line as $row => $value){
$value = mysqli_real_escape_string($conn, $value);
array_push($rows, $value);
}
$line = mysqli_fetch_row($result);
}
return $rows;
}
答案 1 :(得分:0)
为什么你不计算返回的行数??
while($line = mysqli_fetch_row($result)){
foreach($line as $row => $value){
$value = mysqli_real_escape_string($conn, $value);
array_push($rows, $value);
}
}
if( !empty($rows) ){
return $rows;
}
else{
// what you do in your script if "if(mysqli_fetch_row($result))" returns false
}