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

如何获取mysqli::prepare执行失败时的错误详情?

获取mysqli::prepare执行失败的有效错误描述

当mysqli::prepare()返回false时,无法通过$my_sqli->errno或$my_sqli->error_list获取有效错误信息——因为这些属性对应连接级别错误,而prepare失败的错误属于语句级别错误。你需要通过$my_sqli->error获取具体错误描述,或者在判断$stmt === false时直接抛出包含该属性的异常。

修改后的代码示例:

<?php
$stmt = $my_sqli->prepare("UPDATE MyTable SET a=?, b=?, c=? WHERE x='whatever'");

if ($stmt === false) {
    throw new Exception("Prepare failed: " . $my_sqli->error);
}

更推荐的做法是开启mysqli异常模式,无需手动判断错误,系统会自动抛出含详细信息的异常:

<?php
// 开启mysqli异常模式
$my_sqli->report_mode = MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT;

try {
    $stmt = $my_sqli->prepare("UPDATE MyTable SET a=?, b=?, c=? WHERE x='whatever'");
    // 后续操作
} catch (mysqli_sql_exception $e) {
    throw new Exception("Prepare failed: " . $e->getMessage());
}

核心原因:mysqli::prepare()执行失败时,错误信息会被存储在连接对象的error属性中,而非errno或error_list(二者通常仅在连接出错时赋值)。开启异常模式后,所有mysqli操作的错误都会自动抛出异常,能大幅简化错误处理逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 06:15:39