#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 (水)};