php - Mysqli while 循环在明显非空结果集上返回空数组

标签 php mysql mysqli

在 PHP 中,我使用 mysqli 从数据库中获取结果集。获取该结果集后,我将其交给返回对象的函数。 给出结果集: Obviously non-empty resultset

为什么有这个功能:

   /**
     * @param resource|\mysqli_result $result
     * @return array|bool
     */
    public static function getObjectArray($result) {
        if($result === FALSE) {
            return FALSE;
        }
        $func = ((gettype($result) === 'resource') ? 'mysql' : 'mysqli') . '_fetch_object';
        $array = array();
        while($row = $func($result)) {
            $array[] = $row;
        }
        return $array;
    }

返回一个空数组。调试时,它只是跳过 while 循环体。这个函数在数百个其他地方都没有问题,但对于这个特定的结果集,它会崩溃。

提前致谢。

最佳答案

我不知道它的详细信息,但结果集似乎是某种隐式引用传递。我将其分解为仅损坏的部分并运行了一些测试,即使我将结果集作为参数传递给函数,它也会将原始数据的 data_seek 设置为末尾。我在传入的结果集上重置了它,并且工作正常。如果有人对实际发生的事情有任何见解,我很乐意有更深入的了解。

谢谢

关于php - Mysqli while 循环在明显非空结果集上返回空数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24325550/

相关文章:

php - Abs() - PHP 中的绝对值函数问题

javascript - 如何阻止 setInterval 在 .load() 上创建多个实例?

php - Zend 框架 2 : not able to send desired status code in response

php - 无法使用旧的不安全身份验证连接到 MySQL 4.1+

mysql - 检索缺失的列值

php - 减少 codeigniter 中的加密字符串长度

MySQL 从表中删除图像

php - 如何使用mysqli准备语句获取insert_id

php - mysqli 查询没有结果 做点别的事 做点别的事

php - Mysqli 准备语句到多个数据库