为什么不能将mysqli_fetch_object重用于同一个查询?

时间:2014-08-12 15:45:20

标签: php mysqli

所以我注意到,如果我多次为同一个查询mysqli_fetch_object($A)调用$A,我会收到此错误消息:

  

注意:尝试在[line]上的[file]中获取非对象的属性

例如,如果我这样做:

// This returns a single row
$A = mysqli_query($mysqli,"SELECT .. FROM ... WHERE ..."); 

echo mysqli_fetch_object($A)->item; // This works fine
echo mysqli_fetch_object($A)->item2; // Error on this line

我很好奇为什么你不能这样做,这是他们的具体原因吗?

注意:

我知道您可以通过执行以下操作来解决此问题:

$obj = mysqli_fetch_object($A);

echo $obj->item; 
echo $obj->item2; 

1 个答案:

答案 0 :(得分:2)

查看php doc中的代码示例,我假设您没有更多行(在您的情况下只有一行),因此mysqli_fetch_object返回NULL。

mysqli_fetch_object每次调用时都不会获取同一行。它获取每个连续的行。如果你调用它一次,它会返回第一行,如果你调用它x次,它会返回第x行。

这就是文档示例有效的原因:

$query = "SELECT Name, CountryCode FROM City ORDER by ID DESC LIMIT 50,5";

if ($result = $mysqli->query($query)) {

    /* fetch object array */
    while ($obj = $result->fetch_object()) {
        printf ("%s (%s)\n", $obj->Name, $obj->CountryCode);
    }

    /* free result set */
    $result->close();
}

如您所见,while运行[行数]周期。