在 PHP 中尝试获取非对象的属性:详解
在 PHP 中,遇到“尝试获取非对象的属性” -object”错误消息可能会令人困惑。为了深入研究此错误的原因和解决方案,让我们分析提供的代码片段:
// Control page $results = mysql_query(...); $sidemenus = mysql_fetch_object($results);
// View page foreach ($sidemenus as $sidemenu) { echo $sidemenu->mname."<br />"; }
出现问题是因为 mysql_fetch_object() 返回表示结果集第一行的单个对象,而视图页面中的循环将 $sidemenus 视为数组并尝试将其元素作为对象访问。
// Fix $results = mysql_query(...); $sidemenus = array(); while ($sidemenu = mysql_fetch_object($results)) { $sidemenus[] = $sidemenu; }
此修改后的代码将 $sidemenus 初始化为数组并迭代结果集,添加每个对象到数组。随后,视图页面可以安全地将 $sidemenus 作为对象数组进行循环。
或者,为了更有效地处理数据库,请考虑切换到 PDO(PHP 数据对象)。 PDOStatement::fetchAll(PDO::FETCH_OBJ) 提供类似的功能,但具有改进的性能和安全性。
以上是为什么我在 PHP 中收到'尝试获取非对象的属性”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!