Php 如何不执行破坏性读取?
我有一个将查询值保存到PHP数组中的函数。我有这样的代码:Php 如何不执行破坏性读取?,php,arrays,mysqli,Php,Arrays,Mysqli,我有一个将查询值保存到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, $valu
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
}
我注意到它不会保存第一行值,我调试并发现该错误的根本原因是在ifmysqli_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\u fetch\u row$result;行的路径是正确的,但是我觉得有两个foreach循环是多余的,可能是不必要的。这是怎么回事
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;
}
为什么不直接计算返回的行数
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
}
调用mysqli_fetch_row$result将返回第一行,这就是为什么您无法在循环中返回第一行。您可以使用它检查是否返回了任何结果,如果没有,则输出错误,如果返回了,则循环返回结果。@scrowler我最喜欢您的答案,如果您需要代表,请将其作为答案