PHP连接MySQL数据库报错,请求解决并实现查询结果输出
解决PHP连接MySQL数据库的权限及连锁报错问题
先给你拆解下问题根源,再一步步帮你搞定:
核心问题:数据库连接失败
第一个报错已经把原因说得很清楚了:
Warning: mysqli_connect(): (HY000/1044): Access denied for user ''@'localhost' to database 'test1'
你代码里的$username是空字符串,MySQL默认不允许匿名用户访问指定数据库(除非你特意配置过),所以连接直接失败了。后面的两个报错都是连锁反应:
- 因为
mysqli_connect失败返回了false,你把这个布尔值传给mysqli_query,就会触发mysqli_query() expects parameter 1 to be mysqli, bool given的错误 - 接着
$result变成了null,传给mysqli_num_rows自然就报mysqli_num_rows() expects parameter 1 to be mysqli_result, null given
一步步解决:
1. 填写正确的数据库账号信息
XAMPP默认的MySQL用户名是root,密码默认是空(如果你没修改过安装时的配置)。直接修改代码里的账号部分:
$username = "root"; $password = ""; // 如果你之前给MySQL设置过密码,就填你设置的那个
要是不确定密码,打开XAMPP控制面板,点击MySQL旁边的Admin进入phpMyAdmin,右上角能看到当前登录的用户,也可以在用户账户里修改密码。
2. 添加连接错误检测(可选但推荐)
在连接代码后面加个判断,能快速定位连接问题,避免后续一堆模糊的报错:
$conn = mysqli_connect($servername, $username, $password, $dbname); // 检测连接是否成功 if (!$conn) { die("连接失败: " . mysqli_connect_error()); }
3. 确认数据库和表存在
确保test1数据库确实存在,而且里面有apartamente表,同时表的字段id, camere, zona, pret都正确。可以通过phpMyAdmin查看:左边列表找test1,点进去看表列表,再查看apartamente的结构。
修改后的完整代码参考
<?php $servername = "localhost"; $username = "root"; // 改为正确用户名 $password = ""; // 填你的MySQL密码,默认空 $dbname = "test1"; $conn = mysqli_connect($servername, $username, $password, $dbname); // 检测连接 if (!$conn) { die("连接失败: " . mysqli_connect_error()); } $sql = "SELECT id, camere, zona, pret FROM apartamente"; $result = mysqli_query($conn, $sql); // 先判断查询结果是否有效再处理 if($result && mysqli_num_rows($result) > 0) { while($row = mysqli_fetch_assoc($result)) { echo "id: " . $row["id"]. " Camere: " . $row["camere"]. " Zona:" . $row["zona"]. " Pret: " . $row["pret"]."<br>"; } } else { echo "没有找到数据或者查询出错: " . mysqli_error($conn); } // 记得关闭数据库连接 mysqli_close($conn); ?>
内容的提问来源于stack exchange,提问作者S C
相关产品推荐
相关产品推荐

