我遇到了以下奇怪的行为:
//assume $dbh is a valid handle
$stmt = $dbh->prepare("UPDATE mytable SET myintcol = :myintval");
$stmt->bindValue(':myintval', 'notanint', PDO::PARAM_INT);
$stmt->execute();
print_r($stmt->errorInfo());
$stmt->bindValue(':myintval', 123, PDO::PARAM_INT);
$stmt->execute();
print_r($stmt->errorInfo());
这将输出:
Array ( [0] => 22P02 [1] => 7 [2] => ERROR: invalid input syntax for integer: "notanint" )
Array ( [0] => 00000 [1] => 7 [2] => ERROR: invalid input syntax for integer: "notanint" )
虽然第二次执行成功,如00000
SQLSTATE错误代码所示,并通过检查实际表的更新,由于某种原因,该数组的元素2,文档调用"特定于驱动程序错误消息",保留上一条消息。这似乎明显与PDOStatement::errorInfo()
(http://php.net/manual/en/pdostatement.errorinfo.php)的文档相矛盾,后者声明它将"获取与语句句柄上一次操作相关的扩展错误信息& #34;
有没有人有任何解释?它不是一个表明它只是一个错误。