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 — デフォルトのフェッチ モードを設定するステートメント。