PHP & MySQL报错“no database selected”求助:代码连接问题排查
解决PHP插入MySQL时的“no database selected”错误
嘿,我一眼就找到问题啦!你碰到的这个错误,核心原因是数据库连接函数的参数使用完全错误,咱们一步步来修正:
1. 错误根源:mysqli_connect参数顺序错误
mysqli_connect()的正确参数顺序是:mysqli_connect(服务器地址, MySQL用户名, MySQL密码, 数据库名)
你现在的代码里只传了服务器地址和数据库名,漏掉了用户名和密码,而且参数顺序也不对,导致MySQL既无法完成正确登录,也不知道要关联哪个数据库,自然就抛出了“no database selected”的错误。
XAMPP默认的MySQL配置是:
- 用户名:
root - 密码:空字符串(
"")
2. 修正后的连接代码
把你的连接部分改成这样:
$servername = "localhost"; $username = "root"; // XAMPP默认MySQL用户名 $password = ""; // XAMPP默认无密码 $dbname = "databank"; $conn = mysqli_connect($servername, $username, $password, $dbname); if(!$conn) { die("Connection failed: " . mysqli_connect_error()); }
3. 额外重要提醒:防范SQL注入
你现在的代码直接把$_POST的内容拼接到SQL语句里,这存在严重的SQL注入风险,很容易被恶意攻击。建议改用预处理语句(prepared statements),示例如下:
// 替换原来的SQL插入代码 $sql = "INSERT INTO kundendaten (Kundennummer, ProduktID, Vorname, Nachname, Hausnummer, Strasse, PLZ) VALUES (?, '0', ?, ?, ?, ?, ?)"; // 初始化预处理语句 $stmt = mysqli_prepare($conn, $sql); // 绑定参数(i代表整数,s代表字符串,根据你的字段实际类型调整) mysqli_stmt_bind_param($stmt, "isssss", $Kundennummer, $Vorname, $Nachname, $hausnummer, $strasse, $plz); // 执行语句 if(mysqli_stmt_execute($stmt)) { echo "DONE"; } else { echo "ERROR: " . mysqli_error($conn); } // 关闭语句和连接 mysqli_stmt_close($stmt); mysqli_close($conn);
这样既解决了连接问题,又大幅提升了代码的安全性。
内容的提问来源于stack exchange,提问作者iNex
相关产品推荐
相关产品推荐

