PHPにおけるPDO基礎教程入門級

5248 ワード

PDOはPHP 5に新しく加入した重要な機能です。PHP 5以前のphp 4/php 3は全部一山のデータベース拡張で各データベースとの接続と処理は何ですか?mysql.dll、php_pgsql.dll、php_mssql.dll、php_sqlite.dllなどの拡張によってMySQL、PostgreSQL、MS SQL Server、SQLiteを接続する必要があります。同じように、ADOdb、PEAR:DB、PHPlib:DBなどのデータベースの抽象類を助けてください。だから、PDOの出现は必然です。皆さんは落ち着いて勉强してください。PDOをインストールするのはWindows XP SP 2の上にありますので、全体の過程はWindowsラインで行います。Linux/FreeBSDなどのプラットフォームについては、自分で調べて設置してください。PHP 5.1.4です。すでにphp_を持っています。pdo.dllの拡張ですが、少し設置してから使えます。c:\windows\php.iniを開けて、あれは私のPHP配置ファイルで、次の行を探します。dirこれは私達の拡張されたディレクトリです。私のPHP 5拡張はC:\php 5\extで、この行を変更します。その後php.iniの下に行きます。
 
extension_dir = "C:/php5/ext"
各種PDOの駆動を加えられますが、後のphp_pdo_私はOralceデータベースをインストールしていませんので、これがありません。セミコロンで注釈します。私達のWebサーバーを再起動して、IIS/Apacheです。私のはIISです。へへへ、私を見下して、Windowsの上で、簡単です。再起動後、私達のWebサーバのドキュメントディレクトリにphpinfo.phpのファイルを書きます。これらを加えて、
 

; Dynamic Extensions ;


;extension=php_mbstring.dll , PHP , 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
から出力された内容の中で、PDO PDO support enabled PDO drivers mysql、pgsql、mssql、odbc、firebird面を見たら、各種の駆動説明があります。Firebird,pdo_mssql,pdo_mysql,PDO_ODBC,pdo_pgsql,pdo_sqlite。それでは、ごインストールが成功したことをおめでとうございます。でないと、上の手順をよく確認してください。PDOチュートリアルはMySQL 4.0.26を使っていますが、個人的にはMySQL 4.1.xまたはMySQL 5.0.xを使ってください。これらのバージョンは多くの面白いものが勉強に値するからです。ここでPDOが接続したいのは私のMySQL 4.0です。もしあなたがMySQLをインストールしていなかったら、自分でインストールしてください。私たちはMySQLを確立し、testライブラリにid、name、gender、timeなど4つのフィールドを追加しました。最初のPDOアプリケーションを構築し、Webドキュメントディレクトリのpdo.phpファイルを作成します。dbname=test";私達のDSN(データソース)を構成して、中の情報を見てみます。データベースタイプはmysqlで、ホストアドレスはlocal hostで、データベース名はtestで、このようないくつかの情報です。データベースによってデータソースの構造が異なります。db=new PDO($dsn、'root');PDOオブジェクトを初期化します。構造関数のパラメータは最初は私たちのデータソースです。二つ目はデータベースサーバに接続するユーザです。三つ目のパラメータはパスワードです。接続が成功したとは保証できません。後で異常な状況を説明します。ここでまず接続が成功したと思います。count=$db->exec("INSERT INTO foo SET name="heiyeluren",gender='男',time=NOW()));echo$count;私たちが接続に成功したPDOオブジェクトを呼び出してクエリーを実行します。このクエリはレコードを挿入する操作です。最後に対象リソースを終了する必要があります。デフォルトではこれは長い接続ではありません。データベース長接続が必要なら、最後にパラメータを追加してください。PERSISTENT=>true)は、$db=new PDO($dsn、'root'、'、array(PDO:ATTR_)となります。PERSISTENT=>true);一回の操作はこんなに簡単です。前のものと大差ないかもしれません。ADOdbとは少し似ています。PDOチュートリアルはデータを抽出したいなら、データを使って機能を得るべきです。下に使用する$dbはすべて上の接続済みのオブジェクトです。
 
<?
 phpinfo();
?>
私たちもこのような取得方法を使用してもいいです。
 
<?php
 $dsn = "mysql:host=localhost;dbname=test";
 $db = new PDO($dsn, 'root', '');
 $count = $db->exec("INSERT INTO foo SET name = 'heiyeluren',gender=' ',time=NOW()");
 echo $count;
 $db = null;
?>
データを一度にアレイに取得したいなら、このようにしてもいいです。
 
<?php
 foreach($db->query("SELECT * FROM foo")){
print_r($row);
 }
?>
出力の結果は以下の通りです。中の記録を見て、数字索引と関連インデックスがあり、資源を浪費します。私たちは関連インデックスが必要です。上のコードを見てください。setAttribute()方法は一部の属性を設定します。主な属性はPDO:ATTR_CASE、PDO:ATTR_ERRMODEなど、ここで設定したいのはPDO:ATTR_CASEとは、私達が関連インデックスを使ってデータセットを取得する時、関連インデックスは大文字ですか?小文字ですか?いくつかの選択があります。PDO:CASE_LOWER--強制列名は小文字PDO:CASE_NATURL--列名はオリジナルの方式でPDO:CASE_UPER--強制列名を大文字にして、setFettttch Mode方法を使って結果セットの返却値を設定します。同じタイプです。PDO:FETCH_ASSOC--関連配列形式PDO:FETCH_NUM-デジタルインデックス配列形式PDO:FETCH_BOTH--両方の配列形式があります。これはデフォルトのPDOです。FETCH_OBJ--対象の形で、以前のmysqlに似ています。fetchもちろん、私たちはPDOを使います。ASSOCは、具体的に何を使いますか?あなたの必要に応じて、他のタイプの参考マニュアルを取得します。上記のようなデータの取得方法以外にも、
 
<?php
 $rs = $db->query("SELECT * FROM foo");
 while($row = $rs->fetch()){
print_r($row);
 }
?>
は同じです。指定されたレコードのフィールド結果を取得したいなら、PDOSTTement:fetColumn():
 
<?php
$rs = $db->query("SELECT * FROM foo");
$result_arr = $rs->fetchAll();
print_r($result_arr);
?>
一般的にはfetColumn()を使用してcount統計を行います。または、シングルフィールドの記録だけが必要な場合があります。簡単な総括クエリの操作は主にPDO:query()、PDO::exec()、PDO::prepare()です。PDO:query()は、主に記録結果の戻り操作であり、特にSELECT操作であり、PDO:exc()は、主に結果のないセットに対して返ってくる操作であり、INSERT、UPDATE、DELETEなどの操作であり、その結果は現在の操作に影響を与える列数である。PDO::prepare()は主に前処理動作であり、前処理中のSQL文を実行するためには、rs->execute()を通じて、パラメータを結びつけることができます。機能が比較的強いので、ここで簡単に説明できるのではなく、マニュアルや他の文書を参照してください。取得結果セットの操作は主にPDOSTTEment:fetColumn()、PDOSTTEment:fetch()、PDOSTTEment:fetALL()です。PDOSTtement:fetColumn()は、取得結果が第一条の記録を指定するフィールドであり、デフォルトは最初のフィールドである。PDOSTtement:fetch()は一つのレコードを取得するために使用されます。PDOSTTEment:fetAll()はすべてのレコードセットを一つの中に取得し、結果はPDOSTTEment::setFettch Modeによって設定されます。もう一つはPDO:lastInsertId()とPDOSTtement:rowCount()です。PDO::lastInsertId()は前回の挿入操作に戻り、メインキー列タイプは自己増加の最後の自己増加IDです。PDOSTtement:rowCount()は主にPDOに使用されます:query()とPDO:prepare()はDELETE、INSERT、UPDATE操作に影響を与えた結果セットで、PDO:exec()方法とSELECT操作は無効です。上記の使用から、PDOの機能は確かに強いです。また、結合パラメータ、前処理、保存プロセス、事務処理などの機能については言及していません。他にも様々なデータ拡DSNの構造があります。Oracleデータベース自体には多くの特殊なものがあります。深く勉強し、理解する必要があります。この文章は入門知識を簡単に述べただけです。PDOに対して簡単な理解と言えるでしょう。