我使用以下代码循环遍历行:
while ($row = $result->fetch_assoc()) {
//...
}
但是在mysqli_fetch_assoc
检查是否有下一条记录之前怎么可能呢?我的意思是,像:$result->hasNext()
答案 0 :(得分:4)
使用$ mysqli-> num_rows检查返回行的总数,然后将其与循环中的计数器进行比较,该计数器随每次循环迭代递增。
$row_cnt = $result->num_rows;
$loop_ct = 0;
while($row = $result->fetch_assoc()) {
if(++$loop_ct < $row_cnt) {
//do something
}
}
答案 1 :(得分:3)
你做了一段时间的循环,直到你没有剩下任何行,所以问题是你真的需要测试吗?或者你只是在循环结束时运行你想要的代码?如果你需要在里面测试是否会有下一行,你可以这样做:
$row = $result->fetch_assoc();
while (1) {
...
if (!$row = $result->fetch_assoc()) {
// No next row
break;
}
}
这与你现在正在做的非常相似。
答案 2 :(得分:3)
我更喜欢高效工作,如果不需要,不要编写额外的代码。以下内容可以正常使用:
$cnt = $result->num_rows;
while($row = $result->fetch_assoc()){
//....
$cnt--;
if($cnt == x){ //Where x is the number you want
//....
}
}
答案 3 :(得分:2)
考虑您发布的代码
while ($row = $result->fetch_assoc()) {
//...
}
它已经这样做了。 check out the docs for mysqli_result::fetch_assoc,如果$result->fetch_assoc()
返回NULL,则while循环将中断。您无需手动检查任何内容。
答案 4 :(得分:2)
您可以使用@McWayWeb,也可以尝试使用mysqli_next_result()函数。