我的 while 循环有问题。它不是循环遍历每一行,而是执行一次并退出循环。
循环:
while($row = $db->get_array()){
...
$db->query("DELETE FROM mytable WHERE id='{$row['id']}'");
}
如果我运行 echo $row['id']};
它会循环遍历所有行,它只会与我的 $db
类一起退出。很明显 query
函数或 get_array
打破了循环,但我不知道为什么。
查询函数:
function query($query, $show_error=true)
{
$time_before = $this->get_real_time();
if(!$this->db_id) $this->connect(DBUSER_D, DBPASS_D, DBNAME_D, DBHOST_D);
if(!($this->query_id = mysqli_query($this->db_id, $query) )) {
$this->mysql_error = mysqli_error($this->db_id);
$this->mysql_error_num = mysqli_errno($this->db_id);
if($show_error) {
$this->display_error($this->mysql_error, $this->mysql_error_num, $query);
}
}
$this->MySQL_time_taken += $this->get_real_time() - $time_before;
$this->query_num ++;
return $this->query_id;
}
获取数组:
function get_array($query_id = '')
{
if ($query_id == '') $query_id = $this->query_id;
return mysqli_fetch_array($query_id);
}
最佳答案
你能尝试实例化另一个数据库对象吗
$db1 = new Your Class name();
while($row = $db->get_array()){
...
$db1->query("DELETE FROM mytable WHERE id='{$row['id']}'");
}
看起来当您循环遍历 $db 并使用相同的对象删除该对象时,该对象会更新为新数据集,因此循环停止。
关于php - while 循环在第一行后停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20820867/