PHP PDO
PHP Data Objects (PDO) 拡張機能は、PHP がデータベースにアクセスするための軽量で一貫したインターフェイスを定義します。
PDO はデータ アクセス抽象化レイヤーを提供します。これは、どのデータベースが使用されても、同じ関数 (メソッド) を使用してデータのクエリと取得ができることを意味します。
PDO は PHP5.1 でリリースされ、PHP5.0 の PECL 拡張機能でも使用できます。以前の PHP バージョンでは実行できません。
PDO のインストール
PHP の phpinfo() 関数を通じて、PDO 拡張機能がインストールされているかどうかを確認できます。
Unix システムへの PDO のインストール
Unix または Linux では、次の拡張機能を追加する必要があります:
extension=pdo.so
Windows ユーザー
PDO とすべての主要なドライバーは共有拡張機能として PHP とともに配布されており、アクティブ化するには php.ini を編集するだけです。ファイルを開き、次の拡張子を追加します:
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
これらの構成を設定した後、PHP または Web サーバーを再起動する必要があります。
次は、PDO を使用して MySql データベースに接続する例を見てみましょう:
<?php $dbms='mysql'; //数据库类型 $host='localhost'; //数据库主机名 $dbName='test'; //使用的数据库 $user='root'; //数据库连接用户名 $pass=''; //对应的密码 $dsn="$dbms:host=$host;dbname=$dbName"; try { $dbh = new PDO($dsn, $user, $pass); //初始化一个PDO对象 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)); ?>
次に、PHP PDO の具体的な手順を見てみましょう:
-
定義済み定数
PHP PDO 接続接続管理
PHP PDO トランザクションと自動送信
PHP PDO プリペアドステートメントとストアドプロシージャ
PHP PDO エラーとエラー処理
P HP PDO 大きいオブジェクト (LOB)
PDO クラス:
PDO::beginTransaction — トランザクションを開始する
PDO::commit — トランザクションをコミットする
PDO::__construct — 表現データベースを作成する接続 PDO インスタンス
PDO::errorCode — データベース ハンドルの最後の操作に関連する SQLSTATE を取得します
PDO::errorInfo — 最後のデータベース操作のエラー メッセージを返します
PDO::exec — SQL ステートメントを実行し、影響を受ける行の数を返します
PDO::getAttribute — データベース接続の属性を取得します
PDO::getAvailableDrivers — 利用可能なドライバの配列を返します
PDO::inTransaction — トランザクション内かどうかを確認します
PDO::lastInsertId — 最後に挿入された行の ID またはシーケンス値を返します
PDO::prepare — 実行する SQL ステートメントを準備し、PDOStatement オブジェクトを返します
-
PDO::query — SQL ステートメントを実行し、結果セットとして理解できる PDOStatement オブジェクトを返します。
PDO::quote — SQL ステートメントの文字列に引用符を追加します。
PDO::rollBack — トランザクションをロールバックする
PDO::setAttribute — 属性を設定する
PDOStatement class:
PDOStatement::bindColumn — バインド列を PHP 変数に変換する
PDOStatement::bindParam — パラメータを指定された変数名にバインドする
PDOStatement::bindValue — 値をパラメーターにバインドします。
PDOStatement::closeCursor — ステートメントを再度実行できるようにカーソルを閉じます。
PDOStatement::columnCount — 結果セット内の列の数を返します
PDOStatement::debugDumpParams — SQL 前処理コマンドを出力します
PDOStatement::errorCode — 最後のステートメント ハンドルに関連する SQLSTATE を取得しますOperation
PDOStatement::errorInfo — 最後のステートメント ハンドル操作に関連する拡張エラー情報を取得します
PDOStatement::execute — 準備されたステートメントを実行します
PDOStatement::fetch — 結果から次の行を取得しますset
PDOStatement::fetchAll — 結果セット内のすべての行を含む配列を返します。
PDOStatement::fetchColumn — 結果セット内の次の行から 1 つの列を返します。
PDOStatement::fetchObject — 次の行を取得し、オブジェクトとして返します。
PDOStatement::getAttribute — ステートメントの属性を取得します
PDOStatement::getColumnMeta — 結果セット内の列のメタデータを返します
PDOStatement::nextRowset — 複数行セットのステートメントで次のステートメントに進みますhandle Rowset
PDOStatement::rowCount — 前の SQL ステートメントの影響を受けた行数を返す
PDOStatement::setAttribute — ステートメントの属性を設定する
PDOStatement::setFetchMode — デフォルトのフェッチ モードを設定するステートメント。