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

mysqli查询本地正常主机无结果,求助问题原因与解决方法

问题描述

本地环境运行PHP代码时,mysqli查询结果能正常显示,但部署到主机后查询结果无法显示。

相关代码:

$squery = $config->prepare("SELECT * FROM kbm WHERE nama=? ORDER by tanggal DESC LIMIT ?, ?");
$squery->bind_param("sii", $nama, $curr, $limit);
$squery->execute();
$query = $squery->get_result();
$sqdata = $config->prepare("SELECT * FROM kbm WHERE nama=?");
$sqdata->bind_param("s", $nama);
$sqdata->execute();
$qdata = $sqdata->get_result();

结果获取方式:

while($row = $query->fetch_assoc()){
    // 处理结果逻辑
}

最初怀疑是PHP版本问题,参考PHP 8.2相关mysqli特性修改后,问题仍未解决。

可能的原因及排查方案
  • 主机mysqlnd驱动未启用
    部分共享主机默认没开启mysqlnd驱动,而get_result()依赖这个驱动才能正常工作。可以在主机上创建phpinfo文件,查看mysqlnd是否在已加载扩展列表中。如果没有,要么联系主机商开启,要么改用bind_result()替代,示例代码:

    $squery = $config->prepare("SELECT id, nama, tanggal FROM kbm WHERE nama=? ORDER by tanggal DESC LIMIT ?, ?");
    $squery->bind_param("sii", $nama, $curr, $limit);
    $squery->execute();
    $squery->bind_result($id, $nama, $tanggal);
    while ($squery->fetch()) {
        // 直接使用绑定的变量处理数据
    }
    
  • 变量值或数据匹配问题
    本地和主机环境的$nama、$curr、$limit变量值可能不一致,比如主机上$nama为空或数据库中无对应记录。可以在代码中加入调试输出:

    var_dump($nama, $curr, $limit); // 查看变量实际值
    echo $squery->error; // 输出查询执行错误信息
    

    执行后根据输出确认变量是否正确,以及查询是否存在语法或权限错误。

  • 数据库连接与数据一致性问题
    检查主机的数据库连接配置(地址、用户名、密码、库名)是否正确,确保连接的是目标数据库。同时确认主机上的kbm表结构、数据是否和本地一致,比如是否存在nama字段、数据是否已同步。

  • 字符编码不匹配
    本地和主机数据库字符编码不一致,会导致nama字段匹配失败。可以在数据库连接初始化后强制设置字符集:

    $config->set_charset("utf8mb4");
    

内容的提问来源于stack exchange,提问作者M. Agus Tri Mulyono

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 04:28:26