[PHP]PHP7でSQLite3を使う

投稿者:

PHP7でSQLite3を使うときの基本的な手法を記しておく。

PHPの設定

PHP7でSQLite3を使うためには、SQLite3の拡張機能が有効になっていなければならない。自分で構築した環境であるならPHP.iniを開いて次の記述のコメントアウトを解除しておく。

extension=sqlite3

レンタルサーバーなどではphpinfo()関数で有効無効を確認できる──はず……曖昧な言い方なのは、私が使っているサービスではphpinfo()が無効化されているからだ。まあ、後述する方法でデータベースの作成と接続等を試してみてればわかるはずだ。

データベースの作成と接続

古いバージョンのPHPはSQLiteを扱う関数が個別に用意されていたが、新しいバージョンではSQLite3クラスを通じてオブジェクト指向的にデータベースを操作する形に変わったようだ。

“mydatabase.db”というSQLite3データベースを扱う場合、次のようにインスタンスを作成する。

$db = new SQLite3('mydatabase.db');

このとき’mydatabase.db’が既に存在すればそれに接続し、なければ新たにファイルが作成される。

SQLite3クラスを継承して独自クラスを作ることもできる。

class MyDB extends SQLite3 {
     //コンストラクタ
     function __construct() {
         $this->open('mydatabase.db');
     }
 }

$db = new MyDB();

データベースから切断するときはclose()メソッドを実行しよう。

$db->close();

SQLの実行(INSERT UPDATE DELETE他)

データの挿入(INSERT)、更新(UPDATE)、削除(DELETE)等の結果を返さないSQLの実行はexec()メソッドを使う。

$db = new SQLite3('mydatabase.db');
$sql = "UPDATE table1 SET column1=1";
$db->exec($sql);
$db->close();

query()メソッドでも結果を返さないSQLを実行できる。この場合、メソッドの戻り値で実行結果の成否を確認できる(成功=true、失敗=false)。

SQLの実行(SELECT)

結果を返すSQLはquery()メソッドを使用する

$sql = "SELECT * FROM table1";
$result = $db->query($sql);

結果はSQLite3Resultというオブジェクトで返ってくる。
中身を取り出すにはfetchArray()メソッドを使う。fetchArray()の戻り値はカラムと値がペアになった配列で、カラム名をキーとした連想配列、数値添字配列どちらでも値を取り出すことができる(fetchArray()の引数でどちらの配列で受け取るか指定が可能。デフォルトでは両方)。

$db = new SQLite3('mydatabase.db');
$sql = "SELECT * FROM table1";
$result = $db->query($sql);
while ($row = $result->fetchArray()) {
    echo 'column1 : ' . $row['column1'] . "\n";
    echo 'column2 : ' . $row['column2'] . "\n";
}

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください