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

循环mysqli查询结果时出现Trying to get property of non-object错误求助

错误原因与解决方法

核心错误点

  • fetch_assoc()方法返回的是关联数组,而非对象,你错误地使用了对象访问符->来取值,这直接触发了"Trying to get property of non-object"错误。
  • SQL查询返回的字段名不会保留表别名前缀(比如p.id_poke在结果集中的键名是id_poke,不是p.id_poke)。

解决步骤

  1. 将对象访问符->替换为数组下标访问[]。
  2. 使用SQL查询中定义的字段名(不带表别名)作为数组键。
  3. 额外添加查询有效性判断,避免查询失败时调用fetch_assoc()引发新错误。

修正后的完整代码

<?php  
include "modelo/conexion.php";
$sql = $conexion->query(" SELECT p.id_poke,p.nombre,t.tipo,g.genero 
                        FROM poke AS p INNER JOIN tipo AS t ON p.id_tipo=t.id_tipo 
                        INNER JOIN genero AS g ON p.id_genero=g.id_genero ");

// 先判断查询是否成功且有数据
if($sql && $sql->num_rows > 0){
    while($datos = $sql->fetch_assoc()){?>
<tr>
    <td><?=$datos['id_poke'] ?></td>
    <td><?= $datos['nombre'] ?></td>
    <td><?= $datos['tipo'] ?></td>
    <td><?= $datos['genero'] ?></td>
    <td>
        <a href="" class="btn btn-small btn-danger"><i class="fa-regular fa-pen-to-square"></i></a>
        <a href="" class="btn btn-small btn-danger"><i class="fa-solid fa-trash"></i></a>   
    </td>
</tr>
<?php  
    }
} else {
    echo "<tr><td colspan='5'>暂无数据</td></tr>";
}
?>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 05:30:42