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

PHP开发遇Uncaught Error: Call to undefined function mysql_query()错误求建议

解决Fatal Error: Call to undefined function mysql_query()的问题

这个错误的核心原因很明确:PHP 7及更高版本已经彻底移除了旧的mysql_*系列函数——这些函数早在PHP 5.5就被标记为废弃,现在完全不能用了,必须切换到MySQLi或PDO扩展。

你提到尝试用MySQLi但没解决问题,大概率是转换过程中没注意到函数参数、连接方式的差异。结合你的代码,给你具体的分步修改方案:

1. 修正数据库连接代码

旧的mysql_connect()和mysql_select_db()要替换成MySQLi的写法,而且要保留连接对象(MySQLi的绝大多数函数都需要这个对象作为参数):

// 原旧代码
// $link = mysql_connect($dbhost, $dbuser, $dbpass);
// mysql_select_db($dbname);

// 替换为MySQLi面向过程写法
$link = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);
// 检查连接是否成功
if (!$link) {
    die("数据库连接失败: " . mysqli_connect_error());
}
// 建议设置字符集
mysqli_set_charset($link, "utf8mb4");

2. 替换所有mysql_query()调用

注意!mysqli_query()的参数顺序和mysql_query()正好相反:第一个参数是数据库连接对象,第二个才是SQL语句。比如:

// 原旧代码
// $result = mysql_query("SELECT * FROM categories WHERE parent_id = 0");

// 替换为MySQLi写法
$result = mysqli_query($link, "SELECT * FROM categories WHERE parent_id = 0");

3. 调整结果集读取函数

原来的mysql_fetch_assoc()、mysql_num_rows()等也要换成对应的MySQLi函数,并且传入结果集(或连接对象,视函数而定):

// 原旧代码
// while ($row = mysql_fetch_assoc($result)) { ... }

// 替换为MySQLi写法
while ($row = mysqli_fetch_assoc($result)) {
    // 你的数据处理逻辑
}

// 如果需要获取行数
// 原旧代码: $count = mysql_num_rows($result);
$count = mysqli_num_rows($result);

4. 错误处理的更新

原来的mysql_error()要换成mysqli_error($link),因为需要指定连接对象:

// 原旧代码
// echo mysql_error();

// 替换为MySQLi写法
echo mysqli_error($link);

额外推荐:考虑切换到PDO

如果你的项目有重构空间,更推荐使用PDO——它支持多种数据库,预处理语句能更安全地防止SQL注入,代码也更简洁。举个简单的例子:

try {
    $pdo = new PDO("mysql:host=$dbhost;dbname=$dbname;charset=utf8mb4", $dbuser, $dbpass);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
    // 查询示例
    $stmt = $pdo->query("SELECT * FROM categories WHERE parent_id = 0");
    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
        // 处理数据
    }
} catch(PDOException $e) {
    die("数据库错误: " . $e->getMessage());
}

最后提醒:修改时要逐个检查所有使用mysql_*函数的地方,不要遗漏;修改完成后务必测试每个数据库操作的场景,确保功能正常。

内容的提问来源于stack exchange,提问作者Safi Alsafi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:29:51