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

时间:2014-06-20 10:48:57

标签: 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循环的主体。这个功能在数百个其他地方都没有问题,但是使用这个特殊的结果集,它就会崩溃。

提前致谢。

1 个答案:

答案 0 :(得分:0)

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

由于