PHP で SQLite を利用する方法
SQLite は軽量のインプロセス・データベースエンジンで、今日の多くの主要なプログラムで広く利用されています。
例えば Firefox 等でも、ブックマークやヒストリ等様々なプログラムデータのストレージとして、SQLite を利用しています。 (参考: Firefox における SQLite の利用)
この資料では SQLite を PHP から利用する簡単な例を示します。
SQLite のコマンドラインからの利用
PHP から SQLite を利用する前に、コマンドラインから SQLite を利用してみましょう。
コマンドラインツール (sqlite3.exe) は、SQLite のダウンロードページからバイナリをダウンロード可能です。 2010年3月25日現在、SQLite のバージョンは 3.6.23 が推奨版です。
次の手順で test.db という名前の SQLite データベースファイルを作成して、その中に table1 という名前のテーブルにフィールドを二つ (name と email) 作成し、 さらにその table1 の中にレコードを1件作成します。
> sqlite3 test.db SQLite version 3.6.23 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite> create table table1 ( name varchar(255), email varchar(100) ); sqlite> insert into table1 values ('Keisuke Oyama', 'dadosan@keicode.com' ); sqlite> .exit
それでは、ここで作成した SQLite ファイルを PHP から利用します。
ちなみに、バージョン違いの場合、"file is encrypted or is not a database" (ファイルが暗号化されているか、またはデータベースではありません) という エラーメッセージが返ります。
SQLite の有効化
PHP から SQLite を利用するために、php.ini にて SQLite のエクステンションを有効にします。
PHP の SQLite 用のエクステンションには2種類あります。1つは sqlite_* 系のライブラリで、もうひとつは PDO における SQLite ドライバーです。 sqlite_* は SQLite のバージョン 2.x 用であり、PDO の SQLite ドライバーは SQLite 3.x に対応します。
今回は上記のように、SQLite3 のコマンドツールで作成したデータベースを PHP から利用することを考えているので、PDO エクステンションのみを有効にすれば十分です。
extension=php_pdo.dll ;extension=php_sqlite.dll extension=php_pdo_sqlite.dll
sqlite_* を利用する方は php_sqlite.dll も有効化しておいてください。
PHP から SQLite 3 を利用する
それではいよいよ PHP から SQLite データベースを読みます。
PDO の DSN は 'sqlite:<ファイル名>' となることに気をつけてください。
<?php try { $dbh = new PDO('sqlite:test.db'); $res = $dbh->query( 'SELECT * FROM table1'); while( $row = $res->fetch( PDO::FETCH_ASSOC ) ) { var_dump( $row ); } } catch( PDOException $e ) { echo 'Connection failed: ' . $e->getMessage(); } ?>
実行結果は以下のようになります。
> php test.php array(2) { ["name"]=> string(13) "Keisuke Oyama" ["email"]=> string(19) "dadosan@keicode.com" } >
確かに上記コマンドで作成したレコードが確認できました。