当利用 MySQLi 执行 SQL 查询时,有效处理错误报告至关重要。在提供的代码片段中,stmt_init() 方法的返回值用于检测 SQL 准备期间的错误,出现了一个挥之不去的疑问:
prepare 语句的返回值是否仅指示 SQL 中的错误语句准备还是执行错误?
为了阐明这一点,请考虑以下替代错误处理方法:
if($stmt_test->execute()) $errorflag=true;
此代码在语句执行期间检查错误。但是,没有必要实现此额外检查,因为prepare()方法的返回值包含准备错误和执行错误。
为了确保全面的错误报告,建议将以下行添加到您的连接代码中:
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
这可以报告所有 mysqli 错误。这样一来,您就可以不需要检查返回值并直接编写语句,如下例所示:
$stmt = $mysqli->prepare("INSERT INTO testtable VALUES (?,?,?)"); $stmt->bind_param('iii', $x, $y, $z); $stmt->execute();
任何阶段发生错误都会抛出 PHP 异常。可以像任何其他 PHP 错误一样处理或报告此异常。通过适当配置 PHP 错误报告,您可以确保错误在开发过程中显示在屏幕上并记录在生产服务器上。
以上是MySQLi 的`prepare()`返回值仅指示准备错误还是也指示执行错误?的详细内容。更多信息请关注PHP中文网其他相关文章!