PHP5.6查询MySQL数据库失败,改用mysqli仍报500错误求助
解决PHP5.6+MySQLi查询失败及500错误的问题
咱们来一步步拆解你的问题,500错误通常是服务器端的致命错误,先从最明显的问题入手:
1. 核心问题:混用mysql和mysqli函数
你在查询失败的die语句里用了mysql_error(),但整个代码用的是mysqli扩展——这俩是完全独立的PHP数据库扩展,根本不能混用!这会直接触发致命错误,导致500页面。
另外,之前的@符号会屏蔽所有错误提示,你去掉它是对的,但得把错误函数换成mysqli对应的版本。
2. 数据库连接的错误处理优化
你的连接代码里,mysqli_error()在连接失败时需要传入连接对象,但连接失败时$dbc是false,这时候应该用mysqli_connect_error()来获取连接错误信息,更准确。
3. 开启错误显示,定位具体问题
现在你只看到500错误,看不到具体报错信息,建议在代码开头加上错误显示配置,方便调试:
ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL);
修正后的完整代码
数据库连接文件db.php
<?php // 开启调试错误显示(生产环境要关掉) ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL); $DB_User = 'user'; $DB_Passwd = 'pass'; $DB_Host = 'localhost'; $DB_Name = 'myDB'; $dbc = mysqli_connect($DB_Host, $DB_User, $DB_Passwd, $DB_Name); if (!$dbc) { die('Could not connect: ' . mysqli_connect_error()); } ?>
查询文件
<?php require 'db.php'; $query = "SELECT * FROM USERS"; $response = mysqli_query($dbc, $query); if ($response) { echo 'Query successful!'; } else { echo 'Error - query unsuccessful: ' . mysqli_error($dbc); } ?>
额外排查点
- 确认数据库的用户名、密码、库名完全正确,部分环境下
localhost需要换成127.0.0.1(比如MySQL绑定了特定IP)。 - 检查
USERS表是否存在:Linux服务器上MySQL表名是区分大小写的,如果你实际表名是users,这里会报错。 - 调试完成后,记得关掉
display_errors,避免生产环境泄露敏感信息。
内容的提问来源于stack exchange,提问作者Nick Fusaro
相关产品推荐
相关产品推荐

