Laboratory of Mobile Agricultural Chemicals Searcher
携帯農薬検索実験室

研究会

  ツリー表示 ┃スレッド表示 ┃一覧表示 ┃トピック表示 ┃番号順表示 ┃検索  
364 / 1063 <前へ | 次へ>

〔700〕PHP で SQLite3 を使う
 Hidemi Oya WEB  (07/08/20 16:22)

引用なし
    このサイトで使用している XREA のサーバでは、Apache モジュール版の PHP4 と CGI 版の PHP4/5 が使えます。SQLite は本来 PHP5 からの対応ですが、XREA の仕様では PHP4/5 ともに SQLite2/3 が使えることになっています。

 レガシー関数の sqlite_* 関数は PHP4/5 ともに使えましたが、SQLite2 のみで ACFinder の acis.db を sqlite_open() で開くことはできませんでした。
 では、どうやって SQLite3 のデータベースを操作するかというと、PHP4 の場合は、PHP マニュアルには載っていない sqlite3_* 関数が別途用意されていました。これで問題なく acis.db を操作できますが、sqlite3_num_rows と sqlite3_field_name 関数が実装されていません(この2つは SQLite2 版も実装されていません)。field_name の方は検索結果を取得するときにハッシュのキーとして渡されるのでなくてもなんとかなりますが、num_rows がないのはちょっと辛いです。
 PHP5 の場合は、元々 PDO モジュールで経由で SQLite3 データベースにアクセスするのが標準です。が、私の使用しているサーバでは、SQLite2 のドライバはインストール済みでしたが、残念ながら SQLite3 のドライバがインストールされていないようで、acis.db を操作することはできませんでした。とりあえずサポートに SQLite3 ドライバのインストールを要望中です。

 PHP で SQLite を扱うときに優れているのは、sqlite 関数、PDO_SQLITE 関数とも create_function がサポートされていて、PHP のユーザ関数を簡単に SQLite の関数として登録できるところです。私が使用しているサーバの SQLite3 エンジンには REGEXP 関数が実装されていませんでしたが(MATCH 関数は実装されてますが恐らく全文検索用です)、下記のような感じで簡単に REGEXP 関数(もちろん演算子も)が使えるようになりました(ユーザ関数のパラメータの順番が不明だったのと、create_function のパラメータの順番がマニュアルと異なったので若干悩みましたが^^;)。

function _regexp($pattern, $target) {
 return (int)(mb_eregi($pattern, $target) !== FALSE);
}

$db = sqlite3_open('acis.db');
sqlite3_create_function($db, 'regexp', 2, '_regexp');


〔699〕新検索システム検討中 Hidemi Oya (07/08/20 15:19)
〔700〕PHP で SQLite3 を使う Hidemi Oya (07/08/20 16:22) <<<
〔704〕PHP で SQLite3 を使う(2) Hidemi Oya (07/08/27 22:02)
〔706〕PHP で SQLite3 を使う(3) Hidemi Oya (07/08/28 22:37)
〔709〕嵌ってしまったorz Hidemi Oya (07/09/02 14:46)
〔710〕嵌ってしまった(2) Hidemi Oya (07/09/02 21:01)
〔708〕自前サーバが不要に Hidemi Oya (07/09/01 22:04)
〔711〕自前サーバがやっぱり必要 Hidemi Oya (07/09/03 22:45)
〔712〕自前サーバ立ち上げで決定 Hidemi Oya (07/09/04 21:36)
〔727〕自前サーバ中間報告 Hidemi Oya (07/11/08 0:52)
〔728〕Re:自前サーバ中間報告 Hidemi Oya (07/11/09 1:09)
〔729〕静かだが… Hidemi Oya (07/11/13 23:36)
〔764〕Re:静かだが… Hidemi Oya (07/11/23 22:44)
〔701〕ACFinder データベース流用伺い Hidemi Oya (07/08/20 16:32)
〔702〕Re:ACFinder データベース流用伺い kabe (07/08/21 21:02)
〔703〕Re:ACFinder データベース流用伺い Hidemi Oya (07/08/21 23:06)
〔705〕Re:ACFinder データベース流用伺い kabe (07/08/27 22:32)
〔707〕Re:ACFinder データベース流用伺い Hidemi Oya (07/08/28 22:46)

  ツリー表示 ┃スレッド表示 ┃一覧表示 ┃トピック表示 ┃番号順表示 ┃検索  
364 / 1063 <前へ | 次へ>
ページ:  ┃  記事番号:   
(SS)C-BOARD vv3.8 is Free.