PHP注意事项:尝试获取非对象的属性;“在一行上”;
因此,我在error.log中经常遇到这个错误,无法找到解决方法。我曾尝试在Stack Overflow上搜索类似的问题,但没有成功。如果您能帮上忙,我们将不胜感激 标记的行是错误显示的位置:PHP注意事项:尝试获取非对象的属性;“在一行上”;,php,mysql,Php,Mysql,因此,我在error.log中经常遇到这个错误,无法找到解决方法。我曾尝试在Stack Overflow上搜索类似的问题,但没有成功。如果您能帮上忙,我们将不胜感激 标记的行是错误显示的位置: if(isset($_GET['id']) && !empty($_GET['id'])){ //If statement content here... } elseif(isset($_GET['category']) && !empty($_GET['
if(isset($_GET['id']) && !empty($_GET['id'])){
//If statement content here...
} elseif(isset($_GET['category']) && !empty($_GET['category'])) {
$_GET['category'] = $database->escape_string(filter_var($_GET['category'], FILTER_SANITIZE_STRING));
// This line:
$category_title = $database->query("SELECT `name` FROM `categories` WHERE `slug` = '{$_GET['category']}'")->fetch_object()->name;
$pageTitle = 'something';
$description = 'something';
$keywords = $category_title;
$indexTitle = $category_title;
}
错误是准确地描述了什么是错误的。在盲目调用方法或访问属性之前,需要检查
->
的左侧。i、 你是怎么想的?fetch\u object()
的返回值是您期望的值吗?可以像这样重新创建:$a='';echo$a->foo代码>可能重复的警告:当使用mysqli
时,您应该使用和将用户数据添加到查询中。不要使用手动转义和字符串插值或串联来完成此操作,因为这样会创建严重的错误。意外未扫描的数据是一个严重的风险。使用绑定参数不会太冗长,也更容易检查是否正确。因为它不会抱怨您对布尔值调用fetch\u object()
,所以此错误表示一切正常,但有人(或某物)提供了一个不存在的类别,而您的查询返回0个结果。因此fetch_object()
返回null
,而不是具有名称
属性的对象。您需要将其拆分:首先获取fetch_object()
的返回值,检查它是否为null
,并相应地执行操作,或者如果它是您期望的对象,则获取它的name
属性。感谢您的响应。还有人知道如何修复它吗?谢谢