下面的第二个回显引发错误“试图获取非对象的属性?”第一个echo打印得很好。
$sql = "SELECT id
FROM files
WHERE url = '$url'";
$result = $this->mysqli->query($sql);
echo "companyId: " . $result->fetch_object()->id;
echo "\ncompanyId: " . $result->fetch_object()->id;
为了简化演示此错误,我将回声加倍。我实际上是在尝试检查是否设置了$ result-> fetch_object() - > id,如果是,则执行该操作。我无法正常工作,因为第二次使用它时,它会抛出错误“试图获取非对象的属性。”
if(isset($result->fetch_object()->id))
echo $result->fetch_object()->id;
答案 0 :(得分:3)
使用fetch_object()
时,指针移动到下一行,所以第二次调用它时会得到下一行的结果,如果没有其他行,则得NULL
。
看看manual;如果指针不会移动到下一行,这样的代码将导致无限循环:
/* fetch object array */
while ($obj = $result->fetch_object()) {
printf ("%s (%s)\n", $obj->Name, $obj->CountryCode);
}
答案 1 :(得分:2)
引用它:
$result = $this->mysqli->query($sql);
$id = $result->fetch_object()->id;
echo "companyId: " . $id;
echo "\ncompanyId: " . $id;
答案 2 :(得分:1)
mysqli-resultsets与游标一起使用。这意味着,如果您调用fetch_object()
对象被获取(当然),则光标移动,现在先前检索的对象不再出现在结果集中。将对象检索到变量并与之交互,而不是多次调用fetch_object()
。
$o = $result->fetch_object();