PDO は PHP 5 に追加された主要な新機能です。PHP 5 より前の php4/php3 には、php_mysql.dll、php_pgsql.dll、php_mssql.dll、php_sqlite .dll など、各データベースに接続して処理するためのデータベース拡張機能が多数含まれていたためです。同様に、MySQL、PostgreSQL、MS SQL Server、SQLite に接続するには、ADOdb、PEAR::DB、PHPlib::DB などのデータベース抽象クラスを使用する必要がありますが、結局のところ、これは非常に面倒で非効率的です。 C/C で直接記述するほど PHP コードの効率が高くなるのはなぜでしょうか?したがって、PDO の登場は必然であり、誰もが冷静に学習する姿勢でその使用を受け入れる必要があります。おそらく、PDO によって多くの労力が節約されることがわかるでしょう。
PDO のインストール
私は Windows XP SP2 を使用しているため、プロセス全体が Windows 上で実行されます。Linux/FreeBSD およびその他のプラットフォームについては、情報を見つけて自分でインストールを設定してください。
私のバージョンは PHP 5.1.4 で、すでに php_pdo.dll 拡張機能が付属していますが、使用する前に少しセットアップが必要です。
私の PHP 構成ファイルである c:windowsphp.ini を開き、次の行を見つけます:
extension_dir
これは、私の PHP 5 拡張機能が存在するディレクトリーです。 :php5ext の場合、この行を次のように変更します。
コードをコピー コードは次のとおりです。
extension_dir = "C :/ php5/ext"
コードをコピー コードは次のとおりです。 :
;
以下に、extension=php_mbstring.dll のようなものがあります。最後に PDO を追加します:
extension=php_pdo.dll
extension=php_pdo_mysql.dll
extension=php_pdo_pgsql.dll
extension=php_pdo_sqlite.dll
extension=php_pdo_mssql。 dll
extension=php_pdo_odbc.dll
extension=php_pdo_firebird.dll
;extension=php_pdo_oci8.dll
コードをコピー コードは次のとおりです:
<
phpinfo();
?>
コードをコピーします コード
$dsn = "mysql:host=localhost;dbname=test"
$db = new PDO($dsn, 'root'; , '') ; $count = $db->exec("INSERT INTO foo SET name = 'heiyeluren',gender='male',time=NOW()");
$ db = null
?>
$dsn = "mysql:host=localhost;dbname=test";
は DSN (データ ソース) を構築し、その中の情報を確認します: データベース タイプは mysql、ホスト アドレスは localhost 、データベース名は test という情報をいくつか紹介します。データベースごとにデータソースの構築方法が異なります。
$db = new PDO($dsn, 'root', '');
コンストラクターの最初のパラメーターはデータ ソースであり、2 番目のパラメーターは接続先です。サーバーのユーザー。3 番目のパラメータはパスワードです。接続が成功することは保証できません。例外については後で説明します。ここでは接続が成功したと仮定します。
$count = $db->exec("INSERT INTO foo SET name = 'heiyeluren',gender='male',time=NOW()"); >正常に接続された PDO オブジェクトを呼び出してクエリを実行します。このクエリはレコードを挿入する操作です。PDO::exec() メソッドを使用すると、レコードに影響する結果が返されるため、この結果を出力します。最後に、オブジェクト リソースを終了する必要があります。
$db = null;
デフォルトでは、これは長い接続ではありません。データベースへの長い接続が必要な場合は、最後のパラメータ: array(PDO::ATTR_PERSISTENT => true) 次のようになります:
$db = new PDO($dsn, 'root', '', array(PDO::ATTR_PERSISTENT => true)) ;
これは 1 つの操作と同じくらい簡単です。前のものと大きな違いはありませんが、ADOdb に似ています。
PDO 上級チュートリアル
データを抽出したい場合は、データ取得関数を使用する必要があります。 (以下で使用される $db は、上で接続されているすべてのオブジェクトです)
コードをコピー
コードは次のとおりです: < ?php
foreach($db->query("SELECT * FROM foo")){print_r($row);
この取得方法も使用できます:
$ rs = $db->query("SELECT * FROM foo"); while($row = $rs->fetch()){
print_r($row); > }?>
すべてのデータを一度に配列に取得したい場合は、次のようにすることができます:
code
$rs = $db->query("SELECT * FROM foo"); $result_arr = $rs->fetchAll(); print_r($result_arr);
出力結果は次のとおりです。 🎜>
コードをコピー
コードは次のとおりです:
Array
[名前] => heiyeluren [性別] => 男性 [2] => 男性 [時間] => 2006-10-28 23:14:23 [3] => 2006-10-28 23:14:23
}
内部のレコードを見てみましょう。数値インデックスと関連するインデックスの両方です。リソースの無駄です。インデックスを関連付ける必要があるだけです:
コードをコピー
コードは次のとおりです。
$db->setAttribute(PDO::ATTR_CASE, PDO::CASE_UPPER)
$rs = $db ->query("SELECT * FROM foo");
上記のコードを見て、setAttribute () メソッドはいくつかの属性を設定します: 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() と同様
コードをコピー コードは次のとおりです:
$rs = $db->query("SELECT COUNT(*) FROM foo");
$col = $rs->fetchColumn ();
echo $col;
?>