sql >> データベース >  >> RDS >> Mysql

PDO SQL-状態00000ですが、それでもエラーですか?

    $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 );
    


    1. CSVとMySQLのパフォーマンス

    2. MySQLで日時に挿入する場合のPHPのdate()形式

    3. OperationalErrorを修正する方法:(psycopg2.OperationalError)サーバーが予期せず接続を閉じました

    4. 特定のスキーマにテーブルが存在するかどうかを確認する方法