【发布时间】:2011-02-02 21:33:07
【问题描述】:
我正试图了解 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 prepare' 语句的返回值捕获与它定义的查询的完整执行相关的所有错误?
谢谢 C
【问题讨论】:
-
当您的查询字符串中没有可变部分时,为什么首先使用准备/执行()而不是查询()?或者这只是一个过于简单的例子?
-
是的,对不起。它被简化以显示我如何难以理解从准备好的状态获取明确的错误报告。
标签: php mysql mysqli prepared-statement