勉強したことのメモ

webプログラマが勉強したことのメモ。

PHP5.5からSQLite3を使用する際のよく使う構文

   

PHPからSQLiteを使う際に必ず使うであろう基本的な構文のメモ。PDOは使ったことないので簡単な方法で。あとPHPは5.5、SQLiteは3で以下テーブルを想定した上での構文。

 

CREATE TABLE 'bbs' ( 'id' INTEGER PRIMARY KEY, 'msg' TEXT , 'ymd' DATETIME );

 

オートインクリメントが無いと焦ったんだけどinteger & primary key指定でオートインクリメントになる。

 


 

 

■データベースオープン

$db = new SQLite3('ここにDBファイル');

 

相対パスでOK。[./db/test.sqlite]みたいな感じで書く。拡張子はsqliteのみかと思ったけど、拡張子無しでもいけた。

 


 

 

■データベースクローズ

$db->close();

 


 

 

■書き込み(INSERT)

$msg = $db->escapeString($_POST['msg']); //エスケープ
$query = '
	INSERT INTO bbs 
		(msg, ymd) 
	VALUES 
		("' . $msg . '", datetime("now", "localtime"))
';
$result = $db->query($query);

 

エスケープは[$db->escapeString($hoge);]という形になる。

現在時刻を入れたい場合はnow()では無く、datetime関数というものを使うみたい。そのままdatetime()で入れてしまうと、UTC時間になってしまうので引数入れる。

 

あと、クエリー失敗時は$resultの返り値がfalseになるみたいなので、

if( $result ){
	//true処理
}else{
	//false処理
}

見たいな感じで処理切り替えが出来る。

 


 

 

■削除(DELETE)

$id = $db->escapeString($_GET['id']); //エスケープ
$query = 'DELETE FROM bbs WHERE id = ' . $id;
$result = $db->query($query);

 


 

 

■編集(UPDATE)

$msg = $db->escapeString($_POST['msg']); //エスケープ
$id = $db->escapeString($_POST['id']); //エスケープ

$query = '
	UPDATE bbs 
	SET msg = "' . $msg . '"
	WHERE id = ' . $id
;
$result = $db->query($query);

 


 

 

■読み込み(SELECT)

$query = '
	SELECT * 
	FROM bbs 
	ORDER BY id DESC 
	LIMIT 10
';
$result = $db->query($query);

if( !$result ){
	echo 'sql error!';
	exit();
}

while ($row = $result->fetchArray()) {
	echo $row['msg'] . "<br />";
}

 


 

 

とりあえずこれで簡単なものは作られそう。

 - SQLite

  関連記事

SQLiteを使って感じたメリットとデメリット  

SQLiteを用いたツールをいくつか作って感じたメリットとデメリットをメモ。 & ...

sqliteでphpmyadminみたいに使えるSQLiteManagerの導入

SQLiteのデータベースファイルの中身を見たくてphpmyadminみたいなソ ...

SQLiteとは何なのか

逆アクセスランキングのところで初めてSQLiteというファイルを見たんですけど、 ...

PHPとSQLiteで簡易BBSの作成

PHPとSQLiteの練習で簡易掲示板を作ったのでメモ。   &nbs ...

SQLiteでNULL値の検索

SQLiteにてNULL値のもののみを検索したかったけど分からなかったので調べた ...

SQLiteでINSERTできないエラーが発生

SQLiteでINSERT文を発行するも「Warning: SQLite3::q ...

SQLite3でデータをランダムに抽出したい

SQlite3でデータをランダムで抽出したいケースがあった。MySQLと同様RA ...

PHPとSQLiteでi-mobileのデータをグラフ化

i-mobileでクリック保証のアフィリエイトだけど数値が並んでいるだけでグラフ ...