PHP - mysqli的奇怪行为

时间:2016-01-27 09:12:03

标签: php mysqli

我突然遇到了一个非常奇怪的问题:

我有一个执行查询的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()) { ...

0 个答案:

没有答案