PHPプログラムに関する各種メモ書き

PHPでSQLite3を扱う

PHP5.3以降からSQLite3を扱うクラスが用意されています。

これを使うとSQLiteの操作がとても簡単なのでこちらで紹介します。

■1. PHPからSQLite3のデータベース(test.db)テーブル(test_tbl)を作成する

<?php
// 作成するデータベース名
$db_name = 'test.db';
// 作成するテーブルのSQL
$sql = <<<DOC_END
CREATE TABLE test_tbl (
	test_id    INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
	test_name  TEXT
)
DOC_END;
// INSERTするデータのSQL
$sql2 = <<<DOC_END
INSERT INTO test_tbl(test_id, test_name) VALUES(1, '細野晴臣');
INSERT INTO test_tbl(test_id, test_name) VALUES(2, 'ほそのはるおみ');
INSERT INTO test_tbl(test_id, test_name) VALUES(3, 'ホソノハルオミ');
DOC_END;

try {
  $db = new SQLite3($db_name);
} catch (Exception $e) {
  print 'DB接続エラー。<br>';
  print $e->getTraceAsString();
}
$db->exec( $sql );
$db->exec( $sql2 );
$db->close();
?>

なおSQLiteでデータベースのカラムに指定できる「型」は次の5つ

TEXT
NUMERIC
INTEGER
REAL
NONE

DATEやDATETIME型は存在しないのでTEXT型で処理するのがいいでしょう。


■2. PHPでSQLite3データベースのデータを取得(SELECT)する

<?php
$encoding = 'UTF-8';
mb_internal_encoding($encoding);
ini_set('mbstring.internal_encoding', $encoding);
ini_set('mbstring.script_encoding', $encoding);
header("Content-Type: text/html; charset={$encoding}");

// 接続するデータベース名
$db_name = 'test.db';

try {
  $db = new SQLite3($db_name);
} catch (Exception $e) {
  print 'DB接続エラー。<br>';
  print $e->getTraceAsString();
}

$results = $db->query('SELECT * FROM test_tbl');
print '<pre>';
while ($row = $results->fetchArray(SQLITE3_ASSOC)) {
  print_r($row);
  print '<br>';
}
print '</pre>';

$db->close();
?>

■3. 知っておくと便利なSQLiteのSQL文

あるテーブル(test_tbl)の構造を取得する

PRAGMA table_info(test_tbl);

全てのテーブルを表示する(MySQLでいうところの show tables; )

select name from sqlite_master where type = 'table'

auto increment の値をリセットする

update sqlite_sequence set seq=1 where name='テーブル名';

■4. SQLite のSQL文を実行するプログラム(PHP)

https://pgmemo.tokyo/data/filedir/897_1.zip

↑ このファイルをダウンロードして自分のサーバ上にて実行してください。

SQL文入力画面が表示されます。

■5. SQLite (拡張子 .db のファイル)を直接操作するアプリ【Lita】【sqlitebrowser】

■ Lita

http://www.dehats.com/drupal/?q=node/58

■ sqlite browser

http://sourceforge.net/projects/sqlitebrowser/

データベースファイル( *.db )を直接開くと色々操作できます。とても便利。

<b>(※注意 なおWEBサービス運用中のデータベースファイルを開く時はコピーして別名で操作することをおすすめします)</b>

■6. SQLite (拡張子 .db のファイル)を直接操作するFirefoxアドオン【SQLite Manager】

https://addons.mozilla.org/ja/firefox/addon/sqlite-manager/

既存のデータを残しつつテーブル構造を変更するときはこのアドオンが便利です。

■7. MySQLのSQL文をSQLite用に変換する

http://flatsystems.net/js_mysql_to_sqlite.html

添付ファイル1