$pdo->errorInfo()
が原因です 正常に実行された最後のステートメントを参照します。 $sql->execute()
以降 falseを返す場合、そのステートメントを参照することはできません(何も参照しないか、以前のクエリを参照することはできません)。
理由について$sql->execute()
falseを返します、わかりません... $params
に問題があります アレイまたはデータベース接続を使用します。
注:PHPマニュアル( http://php.net/manual/en/pdo .errorinfo.php
)は、「データベースハンドルの最後の操作」が何を意味するかを正確に定義していませんが、バインディングパラメータに問題があった場合、そのエラーはPDO内で、データベースとの対話なしで発生します。 $pdo->execute()
の場合、 true
を返します 、その$pdo->errorInfo()
有効です。 $pdo->execute()
の場合 false
を返します 、$pdo->errorInfo()
の動作 ドキュメントから明確に明確ではありません。私の経験から正しく思い出せば、executeはtrue
を返します 、MySQLがエラーを返した場合でも、false
を返します 操作が行われなかった場合。ドキュメントは特定されていないため、dbドライバー固有である可能性があります。
この回答は、2012年9月に作成された時点での実際の経験を反映しています。ユーザーが指摘しているように、ドキュメントはこの解釈を明示的に再確認していません。また、特定のデータベースドライバーの実装のみを反映している場合もありますが、$pdo->execute()
の場合は常に真である必要があります。 true
を返します 、その$pdo->errorInfo()
有効です。
PDO ::ERRMODE_EXCEPTIONを設定することもできます 接続シーケンスで。例外処理により、エラーのチェックとクエリが不要になります。
$dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );