You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mysqli报错:Trying to get property of non-object 问题求助(附PHP代码)

排查「Trying to get property of non-object Mysqli result」报错的原因与解决方法

这个报错我见得挺多的,核心就是你在操作一个根本不是mysqli结果对象的东西——大概率是你的数据库查询失败了,返回了false,然后你还把它当对象来调用方法/属性,自然就触发这个错误了。结合你给的代码片段,我给你拆解具体原因和解决办法:

可能的报错原因

  • SQL语句存在明显错误:你提供的代码里SQL语句没写完,而且变量名还写错了($jtitl应该是$jtitle),这会导致mysqli执行查询直接失败,返回false而非有效的结果对象,后续操作这个false肯定会报错。
  • 没检查查询是否成功:就算SQL语句写对了,也可能因为表不存在、字段名拼错、数据库权限不足等原因导致查询失败,如果你跳过结果检查直接去调用fetch_assoc()、num_rows这类方法,必然会触发“非对象属性访问”的错误。
  • 潜在的SQL注入风险(间接导致报错):你直接把POST参数拼接到SQL里,不仅不安全,还可能因为参数里包含单引号这类特殊字符,导致SQL语法彻底混乱,进而让查询返回false。

对应的解决方法

1. 先把SQL语句的低级错误修好

先补全SQL语句,修正变量名的拼写错误:

// 假设你要同时匹配三个条件,补全并修正变量
$sql = "SELECT * FROM addjob WHERE jtitle = '$jtitle' AND location = '$location' AND category = '$category'";

注意要确保所有用到的变量都正确传递,语句语法完整。

2. 必须加查询结果的检查逻辑

执行查询后,先判断结果是否有效,再进行后续操作,这样能快速定位问题:

$result = $conn->query($sql);
// 先检查查询是否失败
if ($result === false) {
    die("查询失败,错误信息: " . $conn->error); // 输出具体错误,方便你排查问题
}
// 只有结果有效时,再处理数据
if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        // 这里处理每行数据,比如输出
        echo "职位: " . $row["jtitle"] . " | 地点: " . $row["location"] . "<br>";
    }
} else {
    echo "没有找到匹配的职位信息";
}

3. 改用预处理语句,从根源避免问题

直接拼接POST参数到SQL里既不安全又容易出语法错误,强烈建议用mysqli的预处理语句:

// 准备带占位符的SQL语句
$stmt = $conn->prepare("SELECT * FROM addjob WHERE jtitle = ? AND location = ? AND category = ?");
// 绑定参数:三个s代表三个字符串类型的参数,根据你的字段类型调整(比如i代表整数)
$stmt->bind_param("sss", $jtitle, $location, $category);
// 执行查询
$stmt->execute();
// 获取结果对象
$result = $stmt->get_result();
// 处理结果
if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        // 处理数据逻辑
    }
}
// 记得关闭语句和连接
$stmt->close();
$conn->close();

4. 额外的排查小技巧

  • 确认你的数据库里真的存在addjob表,且字段jtitle、location、category的拼写完全正确
  • 检查当前连接数据库的用户(这里是root)有没有查询addjob表的权限

内容的提问来源于stack exchange,提问作者ahmed dinar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:42:14