遇到错误消息“尝试获取非对象的属性”时-对象”,检查其发生的上下文非常重要。让我们深入研究一个具体案例来了解原因和解决方案。
在 PHP 脚本中,查询从数据库中检索数据,但是当尝试访问检索结果的特定属性时,会出现错误。涉及的代码片段如下:
控制页面
include 'pages/db.php'; $results = mysql_query("SELECT * FROM sidemenu WHERE `menu_id`='".$menu."' ORDER BY `id` ASC LIMIT 1", $con); $sidemenus = mysql_fetch_object($results);
查看页面
foreach ($sidemenus as $sidemenu): echo $sidemenu->mname."<br />"; endforeach;
原因分析
根本原因在于假设 mysql_fetch_object() 返回一个对象数组,而实际上它只检索单个对象。在视图页面中迭代结果时,它会尝试访问数组元素的属性,在本例中该元素不是数组,而是单个对象。
要解决该问题,需要对脚本进行适当的修改。一种可能的解决方案是使用循环将结果转换为对象数组:
$results = mysql_query("SELECT * FROM sidemenu WHERE `menu_id`='".$menu."' ORDER BY `id` ASC LIMIT 1", $con); $sidemenus = array(); while ($sidemenu = mysql_fetch_object($results)) { $sidemenus[] = $sidemenu; }
通过使用 while 循环迭代结果,每个对象都可以添加到 $sidemenus 数组,创建一个数组可以在视图页面中按预期访问。
以上是为什么我的 PHP 代码中出现'尝试获取非对象的属性”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!