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

PHP报错Trying to get property of non-object,新手求助解决方案

解决PHP错误:Trying to get property of non-object

嘿,作为PHP新手遇到这个问题很正常,我来帮你一步步拆解并解决这个错误!

错误原因解析

你看到的Trying to get property of non-object错误,本质是你试图访问一个非对象的属性。具体到你的代码if ($data->num_rows > 0),说明$data并不是一个有效的MySQLi结果对象——它大概率是false,这意味着你的数据库查询执行失败了。

一步步解决问题

我们从最基础的环节开始排查:

1. 先确保数据库连接成功

在创建连接后,一定要添加连接检查,避免后续操作基于一个失败的连接:

$connection = new mysqli("localhost", "root", "", "hackathon");
// 新增连接检查
if ($connection->connect_error) {
    die("数据库连接失败: " . $connection->connect_error);
}

2. 检查SQL查询的合法性

你代码里的$data = $c...应该是执行查询的语句(比如$data = $connection->query($sql);),先确保你的SQL语句没有语法错误:

  • 先把SQL语句打印出来(测试用,上线后记得删掉),手动在数据库里执行看看是否能得到结果:
    // 假设你的查询语句,根据实际表/字段修改
    $sql = "SELECT * FROM your_table WHERE email = '$email' AND token = '$token'";
    echo $sql; // 打印SQL,检查是否有拼写错误
    $data = $connection->query($sql);
    
  • 常见的SQL错误:表名/字段名拼写错误、引号不匹配、语法不符合MySQL规范。

3. 在访问num_rows前检查查询结果

在使用$data->num_rows之前,先判断$data是否为有效对象,避免报错:

// 检查查询是否执行成功
if ($data === false) {
    die("查询执行失败: " . $connection->error);
}

// 现在再安全地访问num_rows
if ($data->num_rows > 0) { 
    // 这里写你的业务逻辑,比如验证成功的处理
    echo "验证通过!";
} else {
    echo "无效的token或邮箱地址";
}

完整的修正后代码示例

结合你的原始代码,整理后的完整版本如下:

<?php 
if (isset($_GET["token"]) && isset($_GET["email"])) { 
    $connection = new mysqli("localhost", "root", "", "hackathon");
    
    // 检查数据库连接
    if ($connection->connect_error) {
        die("数据库连接失败: " . $connection->connect_error);
    }

    $email = $connection->real_escape_string($_GET["email"]); 
    $token = $connection->real_escape_string($_GET["token"]); 
    
    // 替换成你实际的查询语句
    $sql = "SELECT * FROM user_verification WHERE email = '$email' AND token = '$token'";
    $data = $connection->query($sql);

    // 检查查询结果
    if ($data === false) {
        die("查询错误: " . $connection->error);
    }

    if ($data->num_rows > 0) { 
        echo "验证成功!";
        // 这里添加你的后续处理逻辑
    } else {
        echo "无效的验证信息,请检查链接";
    }

    $connection->close(); // 记得关闭数据库连接
} else {
    echo "缺少必要的验证参数,请检查链接";
}
?>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:57:36