在 PHP 中,我使用 mysqli 从数据库中获取结果集。获取该结果集后,我将其交给返回对象的函数。 给出结果集:
为什么有这个功能:
/**
* @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/