fetch_object()工作一次,然后返回"尝试获取非对象的属性"

时间:2015-06-26 16:30:17

标签: php mysql

我已经阅读了本网站上的许多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()不能两次工作有什么理由吗?

2 个答案:

答案 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.
}