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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 09:00:13