我有一个执行查询的PHP脚本:
$query = "SELECT ShopOrderID, PaymentID FROM shop_order WHERE Done = 0 AND PaymentLockdate IS NOT NULL AND UNIX_TIMESTAMP(OrderDate + 7200 < UNIX_TIMESTAMP(NOW())";
查询没问题,当我将它打印到pma时它执行正常并给我12个结果进行处理。
现在我执行查询并收集结果:
$handle = new MySQLi(
$config->getSqlHost(),
$config->getSqlUser(),
$config->getSqlPW(),
$config->getSqlDbName(),
$config->getSqlPort()
);
$result = $handle->query($query);
现在添加东西,如果我尝试循环结果:
if(is_object($result) == true) { //Is_object returns true!
while($row = $result->fetch_assoc()) { //But this is an error o.O
}
}
我明白了:
Fatal error: Call to a member function fetch_assoc() on a non-object in /var/www/(and so on...)/myscript.php on line 34
现在怪异的是,如果我对对象$ result做了一些测试,它会说:
var_dump(is_object($result)); //bool(true)
var_dump(get_class($result)); //string(13) "mysqli_result"
var_dump($handle->error()); //string(0) ""
var_dump($handle->errno()); //int(0)
var_dump($result); //object(mysqli_result)#4 (5) { ["current_field"]=> int(0) ["field_count"]=> int(2) ["lengths"]=> NULL ["num_rows"]=> int(13) ["type"]=> int(0) }
根据我的查询,有一个绝对有效的结果集,包含13行和2个字段。非常精细,当我尝试将其循环为“非对象”时仍然如此。这里发生了什么?有人遇到过这个问题吗?
会感激任何提示。
并且没有:结果没有被覆盖,我在调用它之前在对象1行上做了var_dumps:while($row = $result->fetch_assoc()) { ...