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

将代码从MySQL迁移至MySQLi时的数据查询报错问题

把MySQL代码迁移到MySQLi的解决方案

我来帮你搞定这个MySQL转MySQLi的问题,顺便解决你遇到的数据拉取报错~ 原来的mysql_*系列函数早就被废弃了,换成MySQLi不仅更安全,还能避免兼容性问题,下面我给你两种改写方案,你可以根据自己的习惯选:

方案一:面向过程风格(和你原来的代码习惯最接近)

这种写法和你原来的mysql_*函数逻辑差不多,只是调整了函数名和参数顺序,同时加入了错误检查和更安全的预处理语句:

// 1. 连接数据库(直接在连接时指定数据库,省掉单独选库的步骤)
$connect = mysqli_connect('localhost', 'root', 'Password', 'playerslog');

// 检查连接是否成功,失败就直接报错
if (mysqli_connect_errno()) {
    die('数据库连接失败:' . mysqli_connect_error());
}

// 2. 处理UUID参数:先判断参数是否存在,再转义(用预处理的话其实可以不用手动转义,但这里还是保留兼容)
if (!isset($_GET['UUID'])) {
    die('缺少必要的UUID参数');
}
$id = mysqli_real_escape_string($connect, $_GET['UUID']);

// 3. 用预处理语句执行查询(比直接拼接字符串更安全,彻底防止SQL注入)
$query = 'SELECT * FROM `playerslog` WHERE `UUID` = ? LIMIT 1';
$stmt = mysqli_prepare($connect, $query);
// 绑定参数:'s'表示这个参数是字符串类型,对应后面的$id
mysqli_stmt_bind_param($stmt, 's', $id);
mysqli_stmt_execute($stmt);
// 获取查询结果
$result = mysqli_stmt_get_result($stmt);

// 4. 读取数据
if ($row = mysqli_fetch_assoc($result)) {
    // 这里可以使用$row里的字段,比如echo $row['username'];
    print_r($row); // 测试用,输出整条记录
} else {
    echo '没有找到匹配的记录';
}

// 收尾:关闭语句和连接
mysqli_stmt_close($stmt);
mysqli_close($connect);

方案二:面向对象风格(更简洁的写法)

如果你习惯面向对象的写法,也可以这样写,逻辑是一样的:

// 连接数据库
$conn = new mysqli('localhost', 'root', 'Password', 'playerslog');
if ($conn->connect_error) {
    die('数据库连接失败:' . $conn->connect_error);
}

// 处理参数
if (!isset($_GET['UUID'])) {
    die('缺少必要的UUID参数');
}
$id = $_GET['UUID'];

// 预处理查询
$stmt = $conn->prepare('SELECT * FROM `playerslog` WHERE `UUID` = ? LIMIT 1');
$stmt->bind_param('s', $id);
$stmt->execute();
$result = $stmt->get_result();

// 读取数据
if ($row = $result->fetch_assoc()) {
    print_r($row);
} else {
    echo '没有找到匹配的记录';
}

// 关闭资源
$stmt->close();
$conn->close();

你之前可能踩的坑

  • 参数顺序搞反:mysqli_real_escape_string需要先传连接对象,再传要转义的字符串,和原来的mysql_real_escape_string参数顺序相反,这很容易导致报错
  • 没做错误检查:原来的代码没检查连接、查询是否成功,出问题了根本不知道哪里错,上面的代码加了错误提示,方便你调试
  • SQL注入风险:虽然原来用了转义,但预处理语句是更可靠的防注入方式,推荐优先用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:40:07