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

PHP项目从MySQL扩展迁移到MySQLi的基础函数改写咨询

原有尝试写法的核心问题

  • 变量作用域错误:函数内部默认无法直接访问config.php中定义的全局配置变量,会触发未定义变量报错
  • 连接资源未复用:每次调用函数都会新建数据库连接,不仅浪费服务器资源,后续其他数据库操作也无法复用该连接
  • 存在多处语法错误:函数参数定义逻辑错误、缺少语句结束分号、缺少括号闭合

正确改写代码(完全兼容原有调用逻辑,无需修改engine.php中的调用代码)

<?php
// 全局变量存储数据库连接资源,供所有数据库操作复用
$mysql_link = null;

function db_connect($db_host, $user_login, $user_password)
{
    global $mysql_link;
    $mysql_link = mysqli_connect($db_host, $user_login, $user_password);
    if (!$mysql_link) {
        // 开发阶段可打开下方注释查看具体连接错误
        // echo mysqli_connect_error();
        return false;
    }
    // 统一设置字符集,避免中文乱码,可根据你的实际字符集调整
    mysqli_set_charset($mysql_link, 'utf8mb4');
    return true;
}

function SelectDB($db_name)
{
    global $mysql_link;
    if (!$mysql_link) {
        return false;
    }
    return mysqli_select_db($mysql_link, $db_name);
}

后续其他函数改写参考规则

你可以参照以下对应关系快速改写原有mysql扩展的代码:

  • mysql_query($sql) → mysqli_query($mysql_link, $sql)
  • mysql_fetch_assoc($result) → mysqli_fetch_assoc($result)
  • mysql_fetch_row($result) → mysqli_fetch_row($result)
  • mysql_num_rows($result) → mysqli_num_rows($result)
  • mysql_insert_id() → mysqli_insert_id($mysql_link)
  • mysql_error() → mysqli_error($mysql_link)
  • mysql_close() → mysqli_close($mysql_link)

内容的提问来源于stack exchange,提问作者Newbie PHP

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 05:57:03