Top / PEAR / DB


 #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
証券会社ランキング比較