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我打赌如果您告诉我们您要实现的目标,会有更好的方法,