ホームページ >バックエンド開発 >PHPチュートリアル >PHP_PHP チュートリアルで PDO を使用する方法
この記事には PDO のインストールは含まれませんが、PDO の使用法を単に要約するだけです。
最初の PDO アプリケーションの構築を開始し、Web ドキュメント ディレクトリに pdo.php ファイルを作成します。
[php]
$dsn = "mysql:host=localhost;dbname=test";
$db = 新しい PDO($dsn, 'root', '');
$count = $db->exec("INSERT INTO foo SET name = 'lix',gender='mail',time=NOW()");
エコー $カウント
$db = null
?>
$dsn = "mysql:host=localhost;dbname=test";
DSN (データ ソース) の構築に使用されます。内部の情報には、データベースの種類が mysql、ホスト アドレスが localhost、データベース名が test が含まれます。それだけです。データベースごとにデータソースの構築方法が異なります。
$db = 新しい PDO($dsn, 'root', '');
PDO オブジェクトを初期化します。コンストラクターの最初のパラメーターはデータ ソース、2 番目のパラメーターはデータベース サーバーに接続するユーザー、3 番目のパラメーターはパスワードです。
エコー $count;
正常に接続された PDO オブジェクトを呼び出してクエリを実行します。このクエリは、PDO::exec() メソッドを使用すると、レコードに影響する結果を返します。最後に、オブジェクト リソースを終了する必要があります:
デフォルトでは、これは長い接続ではありません。データベースへの長い接続が必要な場合は、array(PDO::ATTR_PERSISTENT => true) のように最後にパラメーターを追加する必要があります。
$db = 新しい PDO($dsn, 'root', '', array(PDO::ATTR_PERSISTENT => true));
データを取得したい場合
[php]
$rs=$db->query("SELECT * FROM foo");
foreach($rs->fetch() as $row){
?>
も使えます
[php]
$rs = $db->query("SELECT * FROM foo");
while($row = $rs->fetch()){
print_r($row);
}
?>
すべてのデータを一度に取得します
[php]
$rs = $db->query("SELECT * FROM foo");
$result_arr = $rs->fetchAll();
print_r($result_arr);
?>
結果は次のようになります:
[php]
配列
(
(
[ID] = > 1
[0] => 1
[名前] = & gt;
[1] =>
[性別] = >
[2] => 男性
[時間] = & gt; 2006-10-28 23:14:23
[3] => 2006-10-28 23:14:23
)
}
[php]
$db->setAttribute(PDO::ATTR_CASE, PDO::CASE_UPPER);
$rs = $db->query("SELECT * FROM foo");
$rs->setFetchMode(PDO::FETCH_ASSOC);
$result_arr = $rs->fetchAll();
print_r($result_arr);
?>
setAttribute() メソッドは、PDO 属性を設定します。主な属性は、PDO::ATTR_CASE、PDO::ATTR_ERRMODE などです。ここで設定する必要があるのは、PDO::ATTR_CASE、つまり、関連するインデックスを使用する場合です。データセットを取得します。関連付けられたインデックスは大文字または小文字です。いくつかのオプションがあります:
PDO::CASE_LOWER -- 列名を強制的に小文字にする
PDO::CASE_NATURAL -- 列名はオリジナルの方法です
PDO::CASE_UPPER -- 列名を強制的に大文字にする
setFetchMode メソッドを使用して、結果セットを取得するための戻り値のタイプを設定します。同じタイプは次のとおりです。
PDO::FETCH_ASSOC -- 連想配列形式
PDO::FETCH_NUM -- 数値インデックス配列形式
PDO::FETCH_BOTH -- どちらも配列形式で使用でき、これがデフォルトです
PDO::FETCH_OBJ -- 前の mysql_fetch_object() と同様のオブジェクトの形式
もちろん、一般的には PDO::FETCH_ASSOC を使用します。具体的に何を使用するかは、必要に応じて異なります。他の取得タイプについては、マニュアルを参照してください。
上記のデータ取得方法に加えて、次のこともできます:
[php]
$rs = $db->prepare("SELECT * FROM foo");
$rs->execute();
while($row = $rs->fetch()){
print_r($row);
}
?>
指定したレコードのフィールドの結果を取得したい場合は、PDOStatement::fetchColumn():
を使用できます。
[php]
$rs = $db->query("SELECT COUNT(*) FROM foo");
$col = $rs->fetchColumn();
エコー $col
?>
概要:
クエリ操作は主に PDO::query()、PDO::exec()、PDO::prepare() です。 PDO::query() は主に、記録された結果を返す操作、特に SELECT 操作に使用されます。PDO::exec() は主に、INSERT、UPDATE、DELETE などの結果セットを返さない操作に使用されます。結果は、現在の操作によって影響を受ける列の数を返します。 PDO::prepare() は主に前処理操作です。前処理で SQL ステートメントを実行するには $rs->execute() を使用する必要があります。このメソッドはパラメータをバインドすることができ、これだけでは説明できません。マニュアルやその他のドキュメントを参照できます。
結果セットを取得するための主な操作は、PDOStatement::fetchColumn()、PDOStatement::fetch()、PDOStatement::fetchALL() です。 PDOStatement::fetchColumn() は、フェッチ結果で指定された最初のレコードのフィールドです。デフォルトは最初のフィールドです。 PDOStatement::fetch() はレコードを取得するために使用され、PDOStatement::fetchAll() はすべてのレコード セットを 1 つに取得するために使用されます。結果を取得するには、PDOStatement::setFetchMode を通じて必要な結果セットのタイプを設定します。 。
【エラー処理】
1. オブジェクト指向のアプローチまず、オブジェクト指向のアプローチを使用して接続エラーなどに対処する方法を見てみましょう:
[php]
試してみてください{
$db = 新しい PDO('mysql:host=localhost;dbname=test', $user, $pass);
$db = null
"エラー: " . $e->getMessage() "
";
死ぬ();
}
?>
ここでは、PHP 5 のオブジェクト指向例外処理機能を使用します。例外が発生した場合、PDOException が初期化されて例外クラスが初期化されます。
PDOException例外クラスの属性構造:
[php]
クラス PDOException は例外を拡張します
{
Public $errorInfo = null; // エラー情報には PDO::errorInfo() または PDOStatement::errorInfo() を呼び出すことでアクセスできます
Protected $message; // 例外情報。Exception::getMessage() を使用してアクセスできます
Protected $code; // SQL ステータス エラー コード。Exception::getCode() を使用して
にアクセスできます。
}
?>
PHP 5 の組み込み例外処理クラス構造を簡単に見てみましょう:
[php]
クラス例外
{
// プロパティ
Protected $message = '不明な例外' // 例外メッセージ
;
protected $code = 0 // ユーザー定義の例外コード
;
保護された $file;
保護された $line;
// メソッド
最終関数 getMessage(); // 例外メッセージを返す
最終関数 getCode(); // 例外コードを返す
Final function getFile(); // 例外が発生したファイル名を返します
Final function getLine(); // 例外が発生したコード行番号を返します
最終関数 getTrace() // backtrace() 配列
Final function getTraceAsString(); // 文字列にフォーマットされた getTrace() 情報
}
?>
同様に、コード内で getFile() と getLine() を適切に呼び出してエラーを特定し、デバッグをより便利にすることができます。
2. プロセス指向のアプローチ
$db = 新しい PDO('mysql:host=localhost;dbname=test', $user, $pass);
$rs = $db->query("foo から aa,bb,cc を選択");
if ($db->errorCode() != '00000'){
Print_r($db->errorInfo());
出る
}
$arr = $rs->fetchAll();
print_r($arr);
$db = null
?>
PDO オブジェクトと PDOStatement オブジェクトには errorCode() メソッドと errorInfo() メソッドがあります。エラーがない場合、errorCode() は 00000 を返します。それ以外の場合は、いくつかのエラー コードが返されます。 errorInfo() は、PHP および MySQL で定義されたエラー コードとエラー情報を含む配列を返します。配列の構造は次のとおりです。
[php]
配列
(
[0] => 42S22
[1] => 1054
[2] => 「フィールドリスト」に不明な列「aaa」があります
)
Heda Li Xin のクレイジー コーディング ライフからの抜粋
http://www.bkjia.com/PHPjc/478395.html
www.bkjia.com
http://www.bkjia.com/PHPjc/478395.html