この拡張モジュールは、SQLLite Embeddable SQL Database Engine 用の 拡張モジュールです。SQLiteは、組込み可能なSQLデータベースエンジン を実装するCライブラリです。SQLiteライブラリをリンクするプログラム は、別のRDBMSプロセスを実行することなくSQLデータベースにアクセス することができます。
SQLiteは、巨大なデータベースサーバーに接続するために使用されるク ライアントライブラリではありません。 SQLiteがそのサーバーなのです。 SQLiteライブラリは、ディスク上のデータベースを直接読み書きします。
注意: より詳細な情報については、SQLiteのWebサイト (» http://sqlite.org/) を参照してください。
このパッケージに付属する INSTALL ファイルを読んでください。 または、単に PEAR インストーラで pecl install sqlite を実行してください。SQLite 自体も既に含まれており、 他のソフトウエアをインストールする必要は全くありません。
Windowsユーザは、DLL版のSQLite拡張モジュールを次の場所から入手可 能です。 (» php_sqlite.dll)
PHP 5 では、SQLite 拡張モジュールとエンジンは PHP 自身にバンドルされ、デフォルトでコンパイルされます。 しかし、PHP 5.1.0 以降では 手動で有効にする必要があります (共有モジュールとしてバンドルされるからです)。 さらに、PHP 5.1.0 以降では SQLite は PDO に依存するようになりました。そのため、 php.ini に以下の行を (この順に) 追加して PDO も 有効にしておく必要があります。
extension=php_pdo.dll extension=php_sqlite.dll
SQLite 3 は、PDO SQLite でサポートされます。
注意: 権限を持たないアカウントに対する Windows 版のインストール Windows オペレーティングシステムでは、権限のないアカウントは デフォルトで設定される TMP 環境変数を利用できません。 これにより SQLite は Windows ディレクトリにテンポラリファイルを作成しますが、 望まれるものではありません。 そのため Web サーバもしくは Web サーバが動作しているユーザーアカウントに対して TMP 環境変数を設定すべきです。 もし、Apache を使用しているなら、httpd.conf ファイル内で SetEnv ディレクティブを使用することで実現可能です。 例えば、次のような感じです。
もしサーバレベルでこの設定を行うことができないのであれば、 スクリプト内で設定することができます。SetEnv TMP c:/tempこの設定は Web サーバがファイルを生成した後で書き込んだり削除したりする 権限を持たせるディレクトリを指定する必要があります。 そうでない場合、次のようなエラーメッセージを受け取るでしょう。 malformed database schema - unable to open a temporary database file for storing temporary tablesputenv('TMP=C:/temp');
以下の関数を利用可能とするには、SQLiteサポートを有効にしてPHPをコ ンパイルするか、php.iniで動的にSQLite拡張モジュールをロードする必 要があります。
SQLiteインターフェイスでは2種類のリソースが使用されています。最初 のリソースはデータベース接続で、2番目は結果セットです。
関数sqlite_fetch_array() と sqlite_current() は、結果配列の種別を表すために定 数を使用します。以下の定数が定義されています。
関数の戻り値はステータスコードです。以下の定数が定義されています。
オープンされている SQLite データベースを表す
__construct - 新規 SQLiteDatabase オブジェクトを生成する
query - クエリを実行する
queryExec - 結果を返さないクエリを実行する
arrayQuery - クエリを実行し、結果を配列として返す
singleQuery - クエリを実行し、単一カラムに対する配列もしくは先頭行の値を返す
unbufferedQuery - バッファされていないクエリを実行する
lastInsertRowid - 直近に挿入された行の行 ID を返す
changes - 直近のステートメントにより更新された行数を返す
createAggregate - SQL ステートメントで使用する集約 UDF を登録する
createFunction - SQL ステートメントで使用する UDF を登録する
busyTimeout - ビジータイムアウト時間を設定または無効にする
lastError - 直近に発生したエラーのエラーコードを返す
fetchColumnTypes - 特定のテーブルからカラム型の配列を返す
バッファされた SQLite の結果セットを表す
fetch - 結果セットから次行を配列として取得する
fetchObject - 結果セットから次行をオブジェクトとして取得する
fetchSingle - 結果セットから先頭カラムを文字列として取得する
fetchAll - 結果セットから全行を配列の配列として取得する
column - 結果セットの現在行からカラムを取得する
numFields - 結果セット内のフィールド数を返す
fieldName - 結果セット内の特定フィールドの名前を返す
current - 結果セットから現在行を配列として取得する
key - 現在行のインデックスを返す
next - 次の行番号へシークする
valid - まだ行が残っているかどうかを返す
rewind - 結果セットの先頭の行番号へシークする
prev - 結果セットの前の行番号へシークする
hasPrev - 前の行が利用可能かどうかを返す
numRows - 結果セットの行数を返す
seek - 特定の行番号へシークする
バッファされていない SQLite 結果セットを表します。 欠課されていない結果セットはシーケンシャルで、前方シークのみ可能です。
fetch - 結果セットから次行を配列として取得する
fetchObject - 結果セットから次行をオブジェクトとして取得する
fetchSingle - 結果セットから先頭カラムを文字列として取得する
fetchAll - 結果セットから全行を配列の配列として取得する
column - 結果セットの現在行からカラムを取得する
numFields - 結果セット内のフィールド数を返す
fieldName - 結果セット内の特定フィールドの名前を返す
current - 結果セットから現在行を配列として取得する
next - 次の行番号へシークする
valid - まだ行が残っているかどうかを返す
php.ini の設定により動作が変化します。
名前 | デフォルト | 変更の可否 | 変更履歴 |
---|---|---|---|
sqlite.assoc_case | 0 | PHP_INI_ALL | PHP 5.0.0 から利用可能です |
以下に設定ディレクティブに関する 簡単な説明を示します。
ハッシュのインデックスに大文字小文字混用(0)、 大文字(1)、小文字 (2)のど れを使用するかを指定します。
このオプションは、データベーススキーマ中での実際のフィールド名の ケースによらず、カラム名が常に大文字または小文字で返されるような 他のデータベースシステムとの互換性が必要な場合に特に有用です。
SQLiteライブラリは、カラム名をそのままのケース(これは、 スキーマで使用したケースに一致します)で返します。 sqlite.assoc_case に 0 を指定した場合、そのままのケースは保持されます。このオプションを 1 または 2 に設定した場合、 PHPはハッシュキーのケースをそれぞれ大文字または小文字のキーに変 換します。
このオプションを使用することで若干の性能劣化がありますが、 PHPスクリプトで自分で大文字/小文字変換を行うよりはかなり高速です。