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"
}

>

確かに上記コマンドで作成したレコードが確認できました。

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 Web/DB プログラミング徹底解説