Php 如何检查fetch_assoc循环中是否还有行?

Php 如何检查fetch_assoc循环中是否还有行?,php,mysql,mysqli,Php,Mysql,Mysqli,我使用以下代码在行中循环: while ($row = $result->fetch_assoc()) { //... } 但是,在mysqli_fetch_assoc检查是否有下一条记录之前,怎么可能?我的意思是,比如:$result->hasNext()使用$mysqli->num\u rows检查返回行的总数,然后将其与循环中随每次循环迭代而递增的计数器进行比较 $row_cnt = $result->num_rows; $loop_ct = 0; while($ro

我使用以下代码在行中循环:

while ($row = $result->fetch_assoc()) {
    //...
}

但是,在mysqli_fetch_assoc检查是否有下一条记录之前,怎么可能?我的意思是,比如:
$result->hasNext()

使用$mysqli->num\u rows检查返回行的总数,然后将其与循环中随每次循环迭代而递增的计数器进行比较

$row_cnt = $result->num_rows;
$loop_ct = 0;
while($row = $result->fetch_assoc()) {
    if(++$loop_ct < $row_cnt) {
        //do something
    }
} 
$row\u cnt=$result->num\u行;
$loop_ct=0;
而($row=$result->fetch_assoc()){
if(++$loop\U ct<$row\U cnt){
//做点什么
}
} 

考虑一下您发布的代码

while ($row = $result->fetch_assoc()) {

  //...

}

它已经在这样做了,如果
$result->fetch_assoc()
返回NULL,while循环将中断。您不需要手动检查任何内容。

您可以使用@McWayWeb,也可以尝试此函数mysqli\u next\u result()


请阅读此处的手册:-

您正在执行while循环,直到没有任何行为止,所以问题是您真的需要测试还是只在循环结束时运行所需的代码?如果需要在内部测试是否有下一行,可以执行以下操作:

$row = $result->fetch_assoc();
while (1) {
   ...
   if (!$row = $result->fetch_assoc()) {
      // No next row
      break;
   }
}

这与您现在所做的非常相似。

我更喜欢高效工作,如果不需要,也不编写额外的代码。以下方法可以很好地工作:

$cnt = $result->num_rows;
while($row = $result->fetch_assoc()){
    //....
    $cnt--;
    if($cnt == x){ //Where x is the number you want
        //....
    }
}

简单。使用
$cnt=$result->num\u行在循环之前。下一步做
$cnt--
在循环中,并且
$cnt
将始终包含剩余的行数。我知道。不过我还是想在下一排之前检查一下谢谢。但是我认为减少行数是一种更聪明的方法,但是使用fetch assoc它会迭代到下一行,这是我想要避免的。我只是想检查一下,如果还有行,也许可以让我们更深入地了解您的目标,这样也许我可以给出更好的建议。@IterAtor我打赌如果您告诉我们您要实现的目标,会有更好的方法,