- try {
- $db = new pdo('mysql:host=localhost;dbname=test', $user, $pass);
- $db = null; e) {
- print "error: " . $e->getmessage() . "
"
- ?>
-
-
- ここで php を使用します5. オブジェクト指向の例外処理機能。例外が発生した場合は、pdoException を呼び出して例外クラスを初期化します。
-
pdoException例外クラスの属性構造:
class pdoException extendsException { public $errorinfo = null; // エラーメッセージ、pdo::errorinfo() または pdostatement::errorinfo() を呼び出して protected $ にアクセスできますmessage ; // 例外情報、Exception::getmessage() を使用して にアクセスできます $code; // SQL ステータス エラー コード、Exception::getcode() を使用して - にアクセスできます
- ?>
-
-
- コードをコピーします
-
-
- この例外処理クラスは、PHP 5 の組み込み例外処理クラスと統合されています。
PHP 5 組み込み例外処理クラス構造:
-
classException
{ // プロパティ protected $message = 'unknown 例外' // 例外メッセージ protected $code = 0; // ユーザー定義の例外コード protected $; file; // 例外が発生したファイル名 - protected $line; // 例外が発生したコード行番号
- // メソッド
- last function getmessage() // 例外情報を返す
- last function getcode(); / 例外コードを返す
- final function getfile(); // 例外が発生したファイル名を返す
- final function getline(); // 例外が発生したコード行番号を返す
- final function gettrace(); ) array
- final function gettraceasstring() ; // 文字列にフォーマットされた gettrace() 情報
- }
- ?>
-
-
- コードをコピー
-
-
- これに対応して、getfile() と getline() は適切に実行できます。デバッグを容易にするためにコード内で呼び出されます。
プロセス指向のアプローチを使用する
コード:
-
- $db = new pdo('mysql:host=localhost;dbname=test', $user, $pass); $rs = $db->query("select aa, bb,cc from foo"); if ($db->errorcode() != '00000'){
print_r($db->errorinfo()); exit; } $arr = $rs ->fetchall(); $db = null;>-
-
- pdo オブジェクトと pdostatement メソッドがある (存在しない場合)エラー、errorcode() は 00000 を返します。それ以外の場合は、エラー コードが返されます。
errorinfo() は、PHP で定義されたエラー コードと MySQL のエラー コードおよびエラー メッセージを含む配列を返します。配列の構造は次のとおりです。
配列
(
[0] => 42秒22
[1] => 1054
[2] => 「フィールドリスト」に不明な列「aaa」があります
)
各クエリの実行後の errorcode() の結果は最新であるため、エラー メッセージの表示を自分で簡単に制御できます。
PDO を使用した PHP およびデータベースの開発中に再びエラーが発生した場合はどうすればよいですか?上記のように扱います。
-
- 11.3.4 pdoのエラー処理
-
- pdo は、プログラム内のエラー情報を取得する 2 つのメソッドを提供します。1 つは errorcode() メソッド、もう 1 つは errorinfo() メソッドです。
-
- 1. errorcode() メソッド
-
- errorcode() メソッドは、データベース ハンドルの操作時に発生するエラー コードを取得するために使用されます。このメソッドの構文形式は次のとおりです。
- 01 string errorcode (void) errorcode() メソッドの戻り値は sqlstate で、5 つの数字と文字で構成されるコードです。
errorcode() メソッドの使用例:
$dsn = 'mysql:dbname=shop;host=localhost'; $user_name = 'root' $user_psw = 'root'; dsn, $user_name, $user_psw); $pdo->exec("update mytable set age=28 where id=1 ");//テーブル mytable が存在しません echo "エラーコード: ".$pdo- > エラーコード();
コードをコピーします
エラーコード出力は以下のとおりです。
2. errorinfo() メソッド
errorinfo() メソッドは、データベース ハンドルの操作時に発生するエラー情報を取得するために使用されます。このメソッドの構文形式は次のとおりです。
01 array errorinfo (void) errorinfo() メソッドの戻り値は配列であり、関連するエラー情報が含まれます。
errorinfo() メソッドを使用します。
$dsn = 'mysql:dbname=shop;host=localhost'; - $user_name = 'root'
- $user_psw = 'root'; dsn, $user_name, $user_psw);
- $pdo->exec("update mytable set age=28 where id=1 ");//テーブル mytable が存在しません
- echo "errorinfo is: "; $pdo ->errorinfo());
- ?>
-
-
- 以下に示すように、コード
-
- によって出力されたエラー メッセージをコピーします。
|