我试图了解 MySQli,但我对错误报告感到困惑。我使用 MySQLi ‘prepare’ 语句的返回值来检测执行 SQL 时的错误,如下所示:
$stmt_test = $mysqliDatabaseConnection->stmt_init();
if($stmt_test->prepare("INSERT INTO testtable VALUES (23,44,56)"))
{
$stmt_test->execute();
$stmt_test->close();
}
else echo("Statement failed: ". $stmt_test->error . "<br>");
但是,prepare语句的返回值是不是只检测SQL语句的准备是否出错,而不检测执行错误呢?如果是这样,我应该因此更改我的执行行以标记错误,如下所示:
if($stmt_test->execute()) $errorflag=true;
然后为了安全起见,我还应该在语句执行后执行以下操作:
if($stmt_test->errno) {$errorflag=true;}
…或者我是否可以开始并且 MySQLi 准备语句的返回值捕获与它定义的查询的完整执行相关的所有错误?
谢谢 C
原文由 Columbo 发布,翻译遵循 CC BY-SA 4.0 许可协议
mysqli 的每个方法都可能失败。幸运的是,现在 mysqli 可以向您报告每个问题,您只需要询问即可。只需将这一行添加到连接代码中,
在那之后,每一个错误都会暴露出来。无需测试任何返回值,只需立即编写语句:
当任何步骤发生错误时,它会抛出一个普通的 PHP 异常,可以像任何其他 PHP 错误一样处理或报告该异常。只需确保您正确配置了 PHP 错误报告,即在开发服务器上的错误显示在屏幕上,而在生产服务器上的错误从不显示而是记录下来。