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

如何让PHP不拦截MySQL错误,同时保留PHP错误处理功能?

解决PHP拦截MySQL错误的问题

要让PHP不自动处理MySQL错误,同时保留对自身错误的正常处理,你可以通过调整mysqli的错误报告模式实现,具体操作如下:

  • 关闭mysqli的PHP自动错误报告
    在初始化mysqli连接后,添加这行代码:

    mysqli_report(MYSQLI_REPORT_OFF);
    

    这会阻止PHP将MySQL错误转化为PHP警告或错误抛出,你就能继续用mysqli_error($this->conn)获取完整错误信息,不受PHP日志截断影响,正常写入自定义的TXT日志。

  • 保留PHP自身错误处理
    你的error_reporting(E_ALL)设置可以保持不变,PHP依然会正常报告自身的错误(比如语法错误、未定义变量这类问题),不会受MySQL错误设置的干扰。

  • 补充记录完整SQL语句
    为了更方便调试,建议在记录错误时把执行的完整SQL语句也一起写入日志。比如在执行SQL前把语句存到类的属性中,出错时同步写入:

    // 执行SQL前保存语句
    $this->current_sql = "INSERT INTO ..."; // 你的目标SQL语句
    // 执行SQL出错时记录日志
    $error_msg = mysqli_error($this->conn);
    $log_content = date('Y-m-d H:i:s') . " | SQL: {$this->current_sql} | Error: {$error_msg}\n";
    file_put_contents('mysql_errors.log', $log_content, FILE_APPEND);
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 08:40:01