PHPのPDOクラスチュートリアル

6411 ワード

www.phpq.net
PDO拡張はPHP 5に組み込まれており、この拡張は
PHP組み込みクラス
PDO
データベース#データベース#にアクセスし、異なるデータベースで同じ
方法名で、データベース接続が統一されていないという問題を解決します.
PDOの目標
軽量で明瞭で便利なAPIを提供
さまざまなRDBMSライブラリの共有プロパティを統合しますが、より高度なプロパティは排除されません.
PHPスクリプトを使用して、抽象/互換性をオプションで提供します.
PDOの特徴:
パフォーマンス.PDOは、既存のデータベース拡張の成功と失敗の経験と教訓を最初から吸収しています.PDOの
コード#コード#は新しいので、PHP 5の最新の特性を利用するために、設計性能を再開する機会があります.
能力.PDOは、一般的なデータベース機能を基盤として提供するとともに、RDBMS独自の機能へのアクセスを容易にすることを目的としています.
簡単です.PDOは、データベースを簡単に使用できるように設計されています.APIはコードに強制的に介入することはなく、各
関数#カンスウ#によって呼び出されたプロシージャ.
実行時に拡張可能.PDO拡張はモジュール化されており、再コンパイルや再コンパイルを必要とせずに、実行時にデータベースのバックエンドにドライバをロードできます.
インストール PHPプログラム全体.例えばPDO_OCI拡張はPDO拡張の代わりに実現される
oracleデータベースAPI.いくつかの用途があります
MySQL、PostgreSQL、ODBC、Firebirdのドライバは、より多くのドライバが開発されています.[separator]
PDOのインストール
私のここはWINDOWSの下で开発用のPDOの拡张で、もしあなたは
Linuxでインストールされている構成は、別の場所で探してください.
バージョン要件:php 5.1以降のバージョンのパッケージにはすでに入っています.php5.0.xはpeclに着きます.php.Netダウンロード、あなたの拡張ライブラリに置いて、PHPの所在するフォルダのextフォルダの下です;マニュアルでは、5.0以前のバージョンではPDO拡張は実行できません.構成:
あなたのphpを修正します.iniプロファイルは、pdoをサポートします.(php.iniというものが分からなかったら、まずはっきりさせて、あなたのphpinfo()関数を呼び出して表示されているphpを修正します.ini)extension=php_pdo.dllの前のセミコロンは削除され、セミコロンはphpプロファイルのコメント記号であり、この拡張は必要です.下にまだある
;extension=php_pdo.dll
;extension=php_pdo_firebird.dll
;extension=php_pdo_informix.dll
;extension=php_pdo_mssql.dll
;extension=php_pdo_mysql.dll
;extension=php_pdo_oci.dll
;extension=php_pdo_oci8.dll
;extension=php_pdo_odbc.dll
;extension=php_pdo_pgsql.dll
;extension=php_pdo_sqlite.dll
各拡張子に対応するデータベースは次のとおりです.
Driver name Supported databases
PDO_DBLIB FreeTDS/Microsoft SQL Server/Sybase
PDO_FIREBIRD Firebird/Interbase 6
PDO_INFORMIX IBM Informix Dynamic Server
PDO_MYSQL MySQL 3.x/4.x
PDO_OCI Oracle Call Interface
PDO_ODBC ODBC v3 (IBM DB2, unixODBC and win32 ODBC)
PDO_PGSQL PostgreSQL
PDO_SQLITE SQLite 3 and SQLite 2
どのデータベースを使用するかは、対応する拡張前のコメント記号「;」を使用します.取ればいいです.
PDOの使用
私はここであなたがすでにmysqlを装ったと仮定して、もし装っていないならば、面倒は先に方法を考えて装って、私のはmysql 5です.0.22、夜道の人が使っているのはMySQL 4.0.26でも使えます.
データベースの接続:
PDO接続データベースを次の例で分析します.<?php
$dbms='mysql'; // oracle ODI, , , ,
$host='localhost'; //
$dbName='test'; //
$user='root'; //
$pass=''; //
$dsn="$dbms:host=$host;dbname=$dbName";
try {
$dbh = new PDO($dsn, $user, $pass); // PDO , $dbh
echo " <br/>";
/*
foreach ($dbh->query('Select * from FOO') as $row) {
print_r($row); // echo($GLOBAL);
}
*/
$dbh = null;
} catch (PDOException $e) {
die ("Error!: " . $e->getMessage() . "<br/>");
}
// , , :array(PDO::ATTR_PERSISTENT => true) :
$db = new PDO($dsn, $user, $pass, array(PDO::ATTR_PERSISTENT => true));
?>
データベースクエリー:
上記のクエリを1回行いましたが、次のクエリも使用できます.<?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()メソッドを使用しているので、その2つのパラメータを置いて、フィールド名を強制的に大文字に変換します.以下にPDO::setAttribute()が複数あるパラメータを示します:PDO::ATTR_CASE:カラム名をフォーマット化します.詳細は次のとおりです(2番目のパラメータ).
PDO::CASE_LOWER:強制列名は小文字です.
PDO::CASE_NATURAL:カラム名は元の方法で
PDO::CASE_UPPER:強制カラム名を大文字にする.
PDO::ATTR_ERRMODE:エラーメッセージ.
PDO::ERRMODE_SILENT:エラーメッセージを表示する、エラーコードのみを表示する.
PDO::ERRMODE_WARNING:警告エラーを表示する.
PDO::ERRMODE_EXCEPTION:異常放出
PDO::ATTR_ORACLE_NULLS(ORACLEだけでなく、他のデータベースも有効):データベースが返すNULL値がphpに対応する値を指定します.
PDO::NULL_NATURAL:変わらない.
PDO::NULL_EMPTY_STRING: Empty string is converted to NULL.
PDO::NULL_TO_STRING: NULL is converted to an empty string.
PDO::ATTR_STRINGIFY_FETCHES: Convert numeric values to strings when fetching. Requires bool.
PDO::ATTR_STATEMENT_CLASS: Set user-supplied statement class derived from PDOStatement. Cannot be used with persistent PDO instances. Requires array(string classname, array(mixed constructor_args)).
PDO::ATTR_AUTOCOMMIT (available in OCI, Firebird and MySQL): Whether to autocommit every single statement.
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY (available in MySQL): Use buffered queries.
例の$rs->setFetchMode(PDO::FETCH_ASSOC);はPDOStatement::setFetchMode()で、戻りタイプに対する宣言です.
次のようになります.
PDO::FETCH_ASSOC--関連配列形式
PDO::FETCH_NUM--数値索引配列形式
PDO::FETCH_BOTH--両方の配列形式があります.これはデフォルトです.
PDO::FETCH_OBJ--
オブジェクトの形式で、以前のmysqlに似ています.fetch_object()
詳細返却タイプ宣言(PDOStatement::メソッド名)はマニュアルを参照してください.
データの挿入、更新、削除、$db->exec("Delete FROM `xxxx_menu` where mid=43");簡単なまとめ上の操作を行います.
クエリー操作は主にPDO::query()、PDO::exec()、PDO::prepare().
PDO::query()は主に記録結果が返される操作,特にSelect操作に用いられる.
PDO::exec()は主に、Insert、Update、Deleteなどの結果セットが返されない操作に対して行われ、現在の操作が影響する列数を返します.
PDO::prepare()は主に前処理操作であり、$rs->execute()で前処理中のSQL文を実行する必要があります.この方法はパラメータをバインドすることができ、機能が強く、本稿で簡単に説明できるものではありません.マニュアルや他のドキュメントを参照してください.
結果セットを取得する操作は、主にPDOStatement::fetchColumn()、PDOStatement::fetch()、PDOStatement::fetchALL().
PDOStatement::fetchColumn()は、取得結果が最初のレコードを指定するフィールドで、デフォルトは最初のフィールドです.
PDOStatement::fetch()はレコードを取得するために使用されます.
PDOStatement::fetchAll()は、すべてのレコードセットを1つに取得します.取得結果は、PDOStatement::setFetchModeによって、結果セットが必要なタイプを設定できます.
また、PDO::lastInsertId()とPDOStatement::rowCount()の2つの周辺操作があります.PDO::lastInsertId()は前回の挿入操作を返し、主キー列タイプは自己増加の最後の自己増加IDである.
PDOStatement::rowCount()は、主にPDO::query()およびPDO::prepare()によるDelete、Insert、Update操作の影響の結果セットであり、PDO::exec()メソッドおよびSelect操作には無効です.