ホームページ >バックエンド開発 >PHPチュートリアル >PHP を PostgreSQL に接続する際の問題

PHP を PostgreSQL に接続する際の問題

WBOY
WBOYオリジナル
2016-06-23 13:53:13950ブラウズ

この期間中、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" );	}
実際、マニュアルには明確に記載されていますが、よく読んでいなかっただけです

PostgreSQL いいえ、エラー番号とエラー メッセージが表示されますか? これは明らかに不可能ですが、PDO がエラー情報を提供するために 2 つの方法を使用しているかどうかはわかりません。

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" );	}
実際、マニュアルにはしっかりと書いてあるのですが、私がよく読んでいなかっただけです

マニュアルをよく読む必要があります。モデレータさん、ありがとうございました

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。