php - while 循环在第一行后停止

标签 php mysql sql class while-loop

我的 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/

相关文章:

mysql - 我应该为同一列创建 2 个索引来加速连接吗?

php - 无法使用 PHP 从 MySQL 获取数据

php - Laravel 5.2 Codeception 功能测试问题与 PUT/PATCH 请求

javascript - 增量按钮在 magento 中不起作用

php - .ajax跨域和MySQL无法正常工作

PHP-GD : Dealing with Unicode characters

SQL 建模/查询问题

mysql - SELECT DISTINCT,尝试从连接中提取,需要唯一的结果

mysql - 插入具有外部约束的 UUID 列失败

sql - 创建由多列和连续日期分区的序列