
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クラスを使っています。