Php Mysqli while循环在明显非空的resultset上返回空数组
在PHP中,我使用mysqli从数据库中获取结果集。获取结果集后,我将其交给一个函数,该函数返回一个对象。 给定结果集: 为什么这个功能:Php Mysqli while循环在明显非空的resultset上返回空数组,php,mysql,mysqli,Php,Mysql,Mysqli,在PHP中,我使用mysqli从数据库中获取结果集。获取结果集后,我将其交给一个函数,该函数返回一个对象。 给定结果集: 为什么这个功能: /** * @param resource|\mysqli_result $result * @return array|bool */ public static function getObjectArray($result) { if($result === FALSE) {
/**
* @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循环的主体。这个函数在数百个其他地方都可以正常工作,但是有了这个特殊的结果集,它就失败了
提前谢谢。我不知道它的详细信息,但结果集似乎是某种隐式的按引用传递。我将其分解为正在分解的部分并运行了一些测试,即使我将结果集作为参数传递给函数,它也会将原始的数据设置为结束。我在传入的结果集上重置了它,它工作正常。如果有人对实际发生的事情有任何见解,我很想有更深入的了解
谢谢我得到了一个提示,请使用
is\u resource
检查它是否是一个资源,或者更好地检查它是否是一个MySQLi resultset,而不是$result instantof MySQLi\u result