【发布时间】:2014-11-19 02:01:57
【问题描述】:
为什么这个函数会返回一个无限循环?我正在尝试创建一个函数,您只需向它提供查询,而 while 循环会处理其余部分。但由于某种原因,只有当我让函数返回 $q->fetch_assoc() 时,它才会进入无限循环。如果我只返回 $q,然后在 while 循环中调用 $q->fetch_assoc() 则不会导致无限循环。
public function fetch($query){
$con = $this->con;
$q = $con->query($query);
return $q->fetch_assoc();
}
while($r = $sqli->fetch("SELECT id FROM users LIMIT 5")){
echo $r['id']."<br />";
}
也试过
public function fetch($query){
$con = $this->con;
$q = $con->query($query);
return $q->fetch_assoc();
}
$x = $sqli->fetch("SELECT id FROM users LIMIT 5");
while($r = $x){
echo $r['id']."<br />";
}
我想也许它每次都在重新创建一个新的 fetch 函数。这也不起作用并导致无限循环。
【问题讨论】:
-
return $q->fetch_assoc();只返回 1 行,不受LIMIT 5的影响,所以你的函数fetch()总是返回true,所以while($r = $sqli->fetch(...))或while($r = $x)会无限运行。 -
应该如何解决?我需要能够为函数提供查询,并且只需要遍历它。