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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:37:27