オブジェクト指向のアプローチ
まず、接続エラーなどの処理を見てみましょう。PHP での PDO のエラー処理は、オブジェクト指向のアプローチで処理されます。
コードをコピー コードは次のとおりです:
try {
$db = new PDO('mysql:host=localhost;dbname=test', $user, $pass) ;
$db = null;
} catch (PDOException $e) {
print " . $e->getMessage() " . ;";
die();
}
?>
コードをコピー コードは次のとおりです:
class PDOException extends Exception
{
public $errorInfo = null; // エラー メッセージ。
protected $message にアクセスするには PDO::errorInfo() または PDOStatement::errorInfo() を呼び出します。 / 例外メッセージ、
にアクセスするには Exception::getMessage() を試行できます。 protected $code; // SQL ステータス エラー コード、
にアクセスするには、Exception::getCode() を使用できます。
?>
コードをコピー コードは次のとおりです:
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() の情報を文字列にフォーマットします
}
?>
コードをコピーします コードは次のとおりです:
$db = 新しい 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());
終了;
}
$arr = $rs->fetchAll();
$db = null;
>PDO オブジェクトと PDOStatement オブジェクトには errorCode() メソッドと errorInfo() メソッドがあり、エラーがない場合は errorCode() が 00000 を返し、それ以外の場合はエラー コードが返されます。 errorInfo() は、PHP および MySQL のエラー コードとエラー メッセージで定義されたエラー コードを含む配列を返します。配列の構造は次のとおりです。
Array
(
$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 "); //テーブル mytableecho "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 に示します。