我已经阅读了本网站上的许多fetch_object()帖子,其中没有人对我遇到过的问题有任何提及。
我正在运行代码:
$sql = $conn->query("SELECT * FROM items WHERE ID = {$n}");
$name = $sql->fetch_object()->name;
$itemfunction = $sql->fetch_object()->itemfunction; //issue here
echo "<div id='" . $n . "' class='item " . $itemfunction . "'><p>";
echo $name . "<br>";
echo $count . "x";
echo "</p></div>";
$n
之前已定义,如果我遇到问题则为1。
$name
已正确定义,echo $name
行可以正常工作,但$itemfunction
行会返回错误:
&#34;试图获得非对象的属性&#34;
第二,第三和第四行echo
行正确运行,第一行正确运行,而$itemfunction
没有返回任何内容。
两个名字&#39;和&#39;项目功能&#39;是类型:&#39; varchar(60)&#39;和整理:&#39; utf8_general_ci&#39;在mysql表中。
&#39;名称&#39;具有价值&#39;皮革帽&#39;和&#39;项目功能&#39;有价值&#39;装备&#39;
fetch_object()
不能两次工作有什么理由吗?
答案 0 :(得分:0)
当您使用fetch_object()
指针移动时,结果集与游标一起使用,因此在第二次调用它时它是NULL
。
而只是将结果保存在变量中:
$data = $sql->fetch_object()->name;
$name = $data->name;
$itemfunction = $data->itemfunction;
答案 1 :(得分:0)
每次调用fetch_object时,都会使指针前进。管理多行(甚至一个,在您的情况下)的更好方法是使用循环:
while ($obj = $sql->fetch_object()) {
$name = $obj->name;
$itemfunction = $obj->itemfunction;
//Do other work here, or just append those to an array.
}