ホームページ >バックエンド開発 >PHPチュートリアル >PHP を PostgreSQL に接続する際の問題
この期間中、PDO メソッドを使用して操作を行っています。ただし、mysql では、すべてのエラー ステートメントがエラーを報告しません。 SQLは直接中断されてエラーメッセージとエラー番号が出力されますが、postgresqlは何も情報やプロンプトを表示せずに結果に偽の値を割り当てるだけで、SQL構文の問題によるものなのかわかりません。エラーが発生します。トランザクション内の SQL 実行でも、最終的には実行が成功しました。 。 。エラーは捕捉されません。
私の設定に何か問題があるのか、それとも操作方法が間違っているのかわかりません。詳しく知っている友人が私を助けてくれることを願っています。ありがとうございます。
PostgreSQL ではエラー番号とエラー メッセージが表示されませんか?これは明らかに不可能です。問題が発生したかどうかを確認する方法がわからないだけです。PDO は、次の 2 つの方法でエラー情報を提供します。
1. errorInfo メソッドを通じて配列を返します。
0 => ANSI。 SQL 標準の SQLSTATE エラーコード
1 => 使用するデータベースで定義されたエラーコード
2 => 使用するデータベースで定義されたエラーメッセージ
最初の項目がすべてであるかどうかでエラーがあるかどうかを判断できます0
これは PDO です デフォルトのメソッド
2. 属性項目 PDO::ATTR_ERRMODE の値を PDO::ERRMODE_EXCEPTION に設定して、例外スロー メカニズムの使用を指定します
try { //在这里做各种数据库操作 } catch (PDOException $e) { die( "Error!: " . $e->getMessage() . "\n" ); }実際、マニュアルには明確に記載されていますが、よく読んでいなかっただけです
1. errorInfo メソッドを通じて配列を返します
array(
0 => ANSI SQL 標準 SQLSTATE エラー コード
1 => 使用されているデータベースによって定義されたエラー コード
2 => 使用されているデータベースによって定義されたエラー メッセージ
}
最初の項目が完了したかどうかを確認できます 0 エラーがあるかどうかを判断します
これは PDO のデフォルトの方法です
2. 属性項目 PDO::ATTR_ERRMODE の値を に設定することで、例外スロー機構の使用を指定しますPDO::ERRMODE_EXCEPTION
try { //在这里做各种数据库操作 } catch (PDOException $e) { die( "Error!: " . $e->getMessage() . "\n" ); }実際、マニュアルにはしっかりと書いてあるのですが、私がよく読んでいなかっただけです