sqlite データベース基本操作 (PHP)

sqlite370_banner
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

1件のコメント

  1. 【ブログ更新 】sqlite データベース基本操作 (PHP) (Linux) http://t.co/Lv7Rk9cs PHPのSQLite3クラスを使っています。

@loftkun へ返信する キャンセル

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