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

本地正常网站迁移至主机后出现mysqli_result::fetch_column()未定义错误

解决 mysqli_result::fetch_column() 未定义的报错问题

问题原因

fetch_column() 是PHP 8.1及以上版本才新增的mysqli结果集方法,你的正式主机PHP版本低于8.1,因此找不到该方法;而本地环境使用的是高版本PHP,所以运行正常。

解决方案

有两种处理方式,可根据实际情况选择:

  1. 升级正式主机的PHP版本
    直接联系主机服务商,将PHP版本升级到8.1或更高,即可和本地环境一致,直接使用fetch_column()方法。

  2. 改用低版本兼容的写法
    如果暂时无法升级PHP,可替换fetch_column()为低版本支持的写法,同时必须修复原代码的SQL注入漏洞(原代码直接拼接用户输入到SQL中,存在极高安全风险),优化后的代码如下:

$users = $_POST["usernameInput"];

// 使用预处理语句避免SQL注入
$stmt = $baglanti->prepare("SELECT COUNT(*) FROM users WHERE username = ?");
$stmt->bind_param("s", $users);
$stmt->execute();

// 兼容低版本PHP的结果获取方式
$result = $stmt->get_result();
$sonuc = $result->fetch_row()[0]; // 替代fetch_column(),取第一行第一列的值

if($sonuc == 0) {
    $username = $users;
} else {
    $username_err = "This username has been used before!";
}

$stmt->close();

补充说明

  • 原代码用SELECT *查询所有字段完全没必要,仅查询COUNT(*)就能判断用户名是否存在,效率更高。
  • 预处理语句是防范SQL注入的标准做法,务必替换直接拼接用户输入的写法,避免网站被攻击。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 19:05:21