PHP无法从MySQL表读取显示数据,求助:mysqli_num_rows()参数错误
解决mysqli_num_rows()参数错误的问题
嘿,这个错误我太熟悉了!咱们先搞清楚为啥会出现这个警告:Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given——这说明你传给mysqli_num_rows()的不是有效的查询结果对象,而是一个布尔值false,通常是你的SQL查询执行失败导致的。
下面是具体的排查和解决步骤:
1. 先确认数据库连接是否正常
在执行SQL查询之前,一定要确保你已经成功连接到了数据库。可以在连接代码后加上检查:
$conn = mysqli_connect("localhost", "你的用户名", "你的密码", "你的数据库名"); // 检查连接是否成功 if (!$conn) { die("数据库连接失败: " . mysqli_connect_error()); }
2. 找出SQL查询失败的具体原因
当mysqli_query()执行失败时会返回false,这时候我们可以用mysqli_error()获取详细的错误信息,帮你定位问题:
// 你的SQL语句,注意表名、字段名别写错! $sql = "SELECT * FROM 你的表名"; $result = mysqli_query($conn, $sql); // 检查查询是否成功 if (!$result) { die("SQL查询失败: " . mysqli_error($conn)); }
运行这段代码后,你就能看到具体的错误原因了——比如表名拼写错误、字段名不存在、没有查询权限等等,这些都是常见的坑。
3. 正确处理查询结果并打印数据
确认查询成功后,再调用mysqli_num_rows(),然后循环输出数据:
// 确认有数据后再处理 if (mysqli_num_rows($result) > 0) { // 循环读取每一行数据 while ($row = mysqli_fetch_assoc($result)) { // 这里替换成你的字段名,比如id、username等 echo "ID: " . $row["id"] . ",名称: " . $row["username"] . "<br>"; } } else { echo "没有找到匹配的数据"; } // 记得关闭连接 mysqli_close($conn);
常见的坑点提醒
- 表名和字段名要区分大小写吗?这取决于你的数据库配置(比如MySQL在Linux下默认区分,Windows下不区分),最好和数据库里的实际名称完全一致。
- 如果涉及用户输入,不要直接把输入拼进SQL语句里,这会导致SQL注入风险,建议使用预处理语句。
内容的提问来源于stack exchange,提问作者Билолбек Атабеков
相关产品推荐
相关产品推荐

