sqliteは、C/C++,Java,PHP,Perl等で利用できる軽量データベースであり、MacOS, iOS, Android等に標準搭載されています。Windows, Linuxでもインストールすれば利用可能です。また、.NET環境で利用できるSystem.Data.SQLiteもあります。
今回は、PHPのSQLite3クラスを使ってデータベースを操作する方法を紹介します。
関連記事)
sqliteコマンド データベース基本操作 (Linux) : 直接sqliteコマンドを叩いてデータベースを操作する方法です。
System.Data.SQLiteデータベース基本操作 その1 基本コマンド(C#) .NET環境からSQLiteを使用する方法です。
事前にsqliteコマンド データベース基本操作 (Linux)の手順で作成したデータベースファイルを使用します。
PHPからsqliteを使用するには、上記エントリで直接コマンドとして叩いていたクエリ文字列を、
をSQLite3のquery()メソッドの引数に指定して発行すればよいということになります。
従って、各コマンドの詳細は省略します。
<?php //******************************************************************************************** /** * @file sample.php * @brief SQLite3のサンプル * * * @author @loftkun */ //******************************************************************************************** main(); //******************************************************************************************** /** * @brief SQLite3のサンプルのmain関数 * @author @loftkun */ //******************************************************************************************** function main() { //名簿に追加したい人物データ生成 $suzuki = new Person("鈴木", 105); $tanaka = new Person("田中", 98); $satou = new Person("佐藤", 103); //人物リスト $persons = array(); array_push($persons, $suzuki, $tanaka, $satou); //名簿データベースに接続 $db = DBConnect('./db_test.sqlite3'); //テーブル名 $table_name = 'test_table'; //レコード挿入サンプル { print('insert<br>'); //人物リストを名簿データベースに格納 DBInsert($db, $table_name, $persons); } //レコード問い合わせサンプル DBSelect($db, $table_name); //レコード更新サンプル { print('update<br>'); DBUpdate($db, $table_name); //表示 DBSelect($db, $table_name); } //レコード削除サンプル { print('delete<br>'); DBDelete($db, $table_name); //表示 DBSelect($db, $table_name); } //名簿データベースから切断 DBDisconnect($db); } //******************************************************************************************** /** * @brief DBConnect関数 * @author @loftkun */ //******************************************************************************************** function DBConnect($db_name){ //データベースに接続 $db = new SQLite3($db_name); return $db; } //******************************************************************************************** /** * @brief DBInsert関数 * @author @loftkun */ //******************************************************************************************** function DBInsert($db, $table_name, $records) { //レコードを格納 $command = "INSERT INTO $table_name( name, age ) "; foreach ($records as $rec){ $values = "VALUES ( \"$rec->name\" , $rec->age )"; $query = $command . $values; //echo $query . "<br>\n"; $results = $db->query($query); } return; } //******************************************************************************************** /** * @brief DBSelect関数 * @author @loftkun */ //******************************************************************************************** function DBSelect($db, $table_name){ //SELECT文で問い合わせ $results = $db->query("SELECT * FROM $table_name"); //表示 while ($row = $results->fetchArray()) { print $row['id'] . " ". $row['name'] . " ". $row['age']. "<br>\n"; } } //******************************************************************************************** /** * @brief DBUpdate関数 * @author @loftkun */ //******************************************************************************************** function DBUpdate($db, $table_name){ //UPDATE文でレコードを更新 $results = $db->query("UPDATE $table_name SET age=99 WHERE name = \"田中\""); } //******************************************************************************************** /** * @brief DBDelete関数 * @author @loftkun */ //******************************************************************************************** function DBDelete($db, $table_name){ //DELETE文でレコードを削除 $results = $db->query("DELETE FROM $table_name WHERE age > 100"); } function DBDisconnect($db){ //データベースから切断 $db->close(); } //******************************************************************************************** /** * @brief 人物クラス * @author @loftkun */ //******************************************************************************************** class Person { var $name; var $age; function Person($name, $age){ $this->name = $name; $this->age = $age; } } ?>
処理結果
insert 1 鈴木 105 2 田中 98 3 佐藤 103 update 1 鈴木 105 2 田中 99 3 佐藤 103 delete 2 田中 99
【ブログ更新 】sqlite データベース基本操作 (PHP) (Linux) http://t.co/Lv7Rk9cs PHPのSQLite3クラスを使っています。