#freeze
#setlinebreak(on)
* PEAR::DB データベース制御 [#ya110b96]

[[DB取得メソッド DB_common::getAll, DB_common::getAssoc, DB_common::getOne>PEAR/DB/getDBMethod]]
[[トランザクション制御 DB_common::autoCommit, DB_common::rollback, DB_common::commit>PEAR/DB/autoCommit]]
[[SQLインジェクション防止 DB_common::quoteSmart>PEAR/DB/quoteSmart]]
[[insert, updateマッピング DB_common::autoExecute>PEAR/DB/autoExecute]]
[[DB取得値拡張クラス DB::DB_row>PEAR/DB/DB_row]]
[[改良型PEAR::DB PEAR::MDB>PEAR/MDB]]
[[PEAR::MDB2 真・データベース制御クラス>PEAR/MDB2]]
[[PEAR::DB_DataObject>PEAR/DB_DataObject]]
[[PECL::PDO>PECL/pdo]]

#htmlinsert(googleAdsense.html)
** 概要 [#q83c9da4]
#ref(http://dozo.rgr.jp/img/img20_file.png,right,nolink,around,PHP::PEAR)

ネイティブ関数より遅いから使わない!!
そう言った人がいました。
その人に問いたい。
ネイティブ関数をプログラム上に書きまくりますか?

(ノ・・)ン。。。。。。(((●コロコロッ


[[PEAR概要>http://dozo.matrix.jp/pear/index.php/PEAR.html]]にもあるようにたくさんあるデータベースを設定するだけで変更できます。
基本設定の構文はこうです(マニュアル引用)。 

 phptype(dbsyntax)://username:password@protocol.hostspec/database 
 phptype: PHPで使用されるデータベースバックエンド。 (すなわちmysqlやodbc等)   
 dbsyntax: SQL構文等のデータベース関連構文。   
 protocol: 使用する通信プロトコル。 (すなわち、tcpやunix等)   
 hostspec: ホスト指定。 (hostname[:port])   
 database: DBMSサーバ上のデータベース使用方法。   
 username: ログイン用ユーザ名。   
 password: ログイン用のパスワード。   
 proto_opts: protocolで使用されるオプション。

例えばMySQLを使ってユーザー名を[PEAR]、パスワードを[phptips]でホスト名を[itboost.co.jp]データベース名を[itbtech]とすると、 

 $dsn = mysql://PEAR:phptips@itboost.co.jp/itbtech  

となります。 

データベースがMySQLからPostgreSQLになった場合はphptypeの[mysql]を[pgsql]にします。 

データベースの制限をユーザー、パスワードでもうけている場合は、ユーザー名・パスワードを別のものにします。 

バーチャルホストなどでサーバを複製し、データベースを別のものにしたい場合は、データベース複製後、データベース名を[itbtech]から別の名前変えます。


データベースに接続する場合、「通常」と「永続的」接続があるとおもいます。関数では[XXX_connect][XXX_pconnect]と使い分けるのですが、PEARのDBでは、接続メソッド connect の第二引数で、接続の形態を選択することが可能です。 

クエリーを送信するとDB::DB_resultオブジェクトが帰ってきます。その際のエラー処理は接続の時と同じです。 

取得したデータはfetchRowで取得します。メソッドを一回実行すれば一レコードが取得されます。レコード数を取得したい場合は、numRowsを使います。 

切断はdisconnectを使います。
永続接続をしている場合はdisconnectでは切断できないのは[XXX_close]関数と同じです。 

   <?
   // firebirdを使ったときのサンプル
    require_once("DB.php");
 
    $phptype = "ibase(firebird)";
    $username = "SYSDBA";
    $password = "masterkey";
    $hostspec = "localhost";
    $port = "3050";
    $dbfile = "/opt/firebird/examples/employee.fdb";
 
    $dsn = "$phptype://$username:$password@$hostspec:$port/$dbfile";
 
    $dbObj = & DB :: connect( $dsn, true ); // 永続接続 
    if( DB :: isError( $dbObj ) ){  // エラー処理 
        echo $dbObj->userinfo;
        exit();
    }
 
    $stmt = "SELECT PO_NUMBER, ORDER_STATUS, ITEM_TYPE FROM SALES"; 
    $result = & $dbObj->getAll( $stmt );
 
    if( DB :: isError( $result ) ){
        echo $result->userinfo;
        exit();
    }
    echo " Query success ";
   
    foreach( $result as $key => $value ){
        echo "$key : ";
        echo nl2br( print_r( $value, true ));
    }
   ?>

バグ?
 firebird1.5で使用するとセグメントエラー(Segment Error)が発生して止まる。
-ストアド --  &new{2007-03-01 10:57:46 (木)};
-ストアードがなにか? -- [[dozo]] &new{2007-03-13 18:34:39 (火)};
-s/設定だけで/設定するだけで/ のようですね。しかし「IT投資促進税制とは」の文字列がなぜどのページにも表示されるのかがよくわかりません。 --  &new{2007-03-14 20:26:58 (水)};
-- ああhtmlinsertか・・・しかしその意図が昔からわかりません。 --  &new{2007-03-14 20:27:40 (水)};
-あー。昔実験するために入れた文字がまだ残ってました。消しときますね。 -- [[dozo]] &new{2007-03-16 16:06:38 (金)};
-See you -- [[Bill]] &new{2007-03-19 09:24:53 (月)};
-with holiday  -- [[ymteejrvxv]] &new{2007-04-10 20:51:05 (火)};
- -- [[swrkoees]] &new{2007-04-14 19:33:16 (土)};
- -- [[iskczbhra]] &new{2007-04-17 16:43:17 (火)};
-Hello, nice site look this: -- [[idxkpkws]] &new{2007-04-18 21:20:58 (水)};


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Third Project
証券会社ランキング比較