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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:12:02