Ajax搜索表单数据库连接异常求助附连接代码及报错信息
解决你的Ajax搜索表单数据库连接问题
嘿,我帮你排查下这个数据库连接的问题,一眼就能看到几个明显的小错误,咱们一步步解决:
核心问题分析
- 混用mysql与mysqli扩展:你的代码里同时用了
mysqli_connect()(mysqli扩展)和mysql_error()(mysql扩展),这俩是完全独立的扩展,不能交叉使用!而且mysql扩展早在PHP 5.5就被废弃,PHP 7+直接移除了,这就是你看到Warning: mysql...警告的根本原因。 - mysqli_select_db参数缺失:
mysqli_select_db()必须第一个参数传数据库连接对象,你只传了数据库名,这也会导致连接失败。
修正后的连接代码
直接替换你的db.inc代码就行:
<?php $username = "xxxx"; $password = "xxxx"; $hostname = "xxxx"; $database = "xxxx"; // 创建连接并保存连接对象 $conn = mysqli_connect($hostname, $username, $password); // 检查连接是否成功 if (!$conn) { die("数据库连接失败: " . mysqli_error($conn)); } // 选择目标数据库,必须传入连接对象 if (!mysqli_select_db($conn, $database)) { die("选择数据库失败: " . mysqli_error($conn)); } ?>
更简洁的写法(推荐)
其实可以用mysqli的面向对象风格,直接在连接时指定数据库,省去单独选库的步骤,代码更清晰:
<?php $username = "xxxx"; $password = "xxxx"; $hostname = "xxxx"; $database = "xxxx"; // 直接在连接时指定数据库 $conn = new mysqli($hostname, $username, $password, $database); // 检查连接状态 if ($conn->connect_error) { die("数据库连接失败: " . $conn->connect_error); } ?>
额外提醒
- 别把数据库账号密码直接写在代码里,建议放在web目录外的配置文件,或者用环境变量存储,更安全。
- 后续处理搜索请求的数据库查询代码,也要统一用mysqli的函数(比如
mysqli_query()),绝对不要再碰mysql系列函数了。
内容的提问来源于stack exchange,提问作者Jitendra Mishra
相关产品推荐
相关产品推荐

