循环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)。
解决步骤
- 将对象访问符
->替换为数组下标访问[]。 - 使用SQL查询中定义的字段名(不带表别名)作为数组键。
- 额外添加查询有效性判断,避免查询失败时调用
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
相关产品推荐
相关产品推荐

