ホームページ  >  記事  >  php教程  >  PHP での PDO のエラー処理

PHP での PDO のエラー処理

WBOY
WBOYオリジナル
2016-06-13 12:05:25847ブラウズ

オブジェクト指向のアプローチ
まず、接続エラーなどの処理を見てみましょう。PHP での PDO のエラー処理は、オブジェクト指向のアプローチで処理されます。

コードをコピー コードは次のとおりです:


try {
$db = new PDO('mysql:host=localhost;dbname=test', $user, $pass) ;
$db = null;
} catch (PDOException $e) {
print " . $e->getMessage() " . ;";
die();
}
?>


ここでは、PHP 5 のオブジェクト指向例外処理機能を使用します。例外が発生した場合は、PDOException例外クラスを初期化するために初期化されます。
PDOException 例外クラスの属性構造:

コードをコピー コードは次のとおりです:


class PDOException extends Exception
{
public $errorInfo = null; // エラー メッセージ。
protected $message にアクセスするには PDO::errorInfo() または PDOStatement::errorInfo() を呼び出します。 / 例外メッセージ、
にアクセスするには Exception::getMessage() を試行できます。 protected $code; // SQL ステータス エラー コード、
にアクセスするには、Exception::getCode() を使用できます。
?>


この例外処理クラスは、PHP 5 の組み込み例外処理クラスと統合されています。PHP 5 の組み込み例外処理クラス構造を簡単に見てみましょう:

コードをコピー コードは次のとおりです:


class Exception
{
// 属性
protected $message = '不明な例外'; // 例外メッセージ
protected $code = 0; // ユーザー定義の例外コード
protected $file; // 例外が発生したファイル名
protected $line; //例外が発生したコード行番号
//メソッド
final function getMessage() // 例外情報を返す
final function getCode(); // 例外コードを返す>final function getFile(); // 例外が発生したファイル名を返します
final function getLine () // 例外が発生したコード行番号を返します
Final function getTrace(); ) array
Final function getTraceAsString(); // getTrace() の情報を文字列にフォーマットします
}
?>

同様に、getFile() と getLine() は次のようになります。エラーを特定し、デバッグをより便利にするために、コード内で適切に呼び出すことができます。
プロセス指向のアプローチを使用します
最初にコードを確認します:

コードをコピーします コードは次のとおりです:

$db = 新しい PDO('mysql:host=localhost;dbname=test', $user, $pass);
$rs = $db->query("SELECT aa,bb,cc FROM foo ");
if ($db->e​​rrorCode() != '00000'){
print_r($db->e​​rrorInfo());
終了;
}
$arr = $rs->fetchAll();
$db = null;

>PDO オブジェクトと PDOStatement オブジェクトには errorCode() メソッドと errorInfo() メソッドがあり、エラーがない場合は errorCode() が 00000 を返し、それ以外の場合はエラー コードが返されます。 errorInfo() は、PHP および MySQL のエラー コードとエラー メッセージで定義されたエラー コードを含む配列を返します。配列の構造は次のとおりです。
Array
(

[0] => 42S22
[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 です。 SQLSTATE は 5 つの数字と文字で構成されるコードです。以下は、errorCode() メソッドの使用例です。

[プログラム 11-17] CD code11pdoerrorCode.php




コードをコピー

コードは次のとおりです:

$dsn = 'mysql:dbname=shop;host=localhost'; $user_name = 'root'; $user_psw = ' root'; $pdo = 新しい PDO($dsn, $user_name, $user_psw);

$pdo->exec("update mytable set age=28 where id=1 "); //テーブル mytable

echo "errorCode は: ".$pdo->errorCode();

;
上記のコードによって出力されるエラー コードを図 11-13 に示します。

2. errorInfo() メソッド

errorInfo() メソッドは、データベースハンドルの操作時に発生するエラー情報を取得するために使用されます。 このメソッドの構文形式は次のとおりです。

01 array errorInfo (void) errorInfo() メソッド 戻り値は、関連するエラー情報を含む配列です。 errorInfo() メソッドを使用したサンプル コードは次のとおりです。

[プログラム 11-18] CD code11pdoerrorInfo.php

コードをコピーします コードは次のとおりです:


$dsn = 'mysql:dbname=shop;host=
$user_name = 'root';
$pdo = 新しい PDO($dsn, $user_name, $user_psw); exec("update mytable set age=28 where id=1 ");//テーブル mytable が存在しません
echo "errorInfo is: ";
print_r($pdo->errorInfo()); 🎜>?>


上記のコードによって出力されるエラー メッセージを図 11-14 に示します。

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