勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

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

   2024/04/18  SQLite

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

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
CREATE TABLE 'bbs' ( 'id' INTEGER PRIMARY KEY, 'msg' TEXT , 'ymd' DATETIME );
CREATE TABLE 'bbs' ( 'id' INTEGER PRIMARY KEY, 'msg' TEXT , 'ymd' DATETIME );
CREATE TABLE 'bbs' ( 'id' INTEGER PRIMARY KEY, 'msg' TEXT , 'ymd' DATETIME );

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

 

データベースオープン

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$db = new SQLite3('ここにDBファイル');
$db = new SQLite3('ここにDBファイル');
$db = new SQLite3('ここにDBファイル');

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

 

データベースクローズ

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$db->close();
$db->close();
$db->close();

 

書き込み(INSERT)

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$msg = $db->escapeString($_POST['msg']); //エスケープ
$query = '
INSERT INTO bbs
(msg, ymd)
VALUES
("' . $msg . '", datetime("now", "localtime"))
';
$result = $db->query($query);
$msg = $db->escapeString($_POST['msg']); //エスケープ $query = ' INSERT INTO bbs (msg, ymd) VALUES ("' . $msg . '", datetime("now", "localtime")) '; $result = $db->query($query);
$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になるみたいなので以下のような形で分岐処理できる。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
if( $result ){
//true処理
}else{
//false処理
}
if( $result ){ //true処理 }else{ //false処理 }
if( $result ){
    //true処理
}else{
    //false処理
}

 

削除(DELETE)

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$id = $db->escapeString($_GET['id']); //エスケープ
$query = 'DELETE FROM bbs WHERE id = ' . $id;
$result = $db->query($query);
$id = $db->escapeString($_GET['id']); //エスケープ $query = 'DELETE FROM bbs WHERE id = ' . $id; $result = $db->query($query);
$id = $db->escapeString($_GET['id']); //エスケープ
$query = 'DELETE FROM bbs WHERE id = ' . $id;
$result = $db->query($query);

 

編集(UPDATE)

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$msg = $db->escapeString($_POST['msg']); //エスケープ
$id = $db->escapeString($_POST['id']); //エスケープ
$query = '
UPDATE bbs
SET msg = "' . $msg . '"
WHERE id = ' . $id
;
$result = $db->query($query);
$msg = $db->escapeString($_POST['msg']); //エスケープ $id = $db->escapeString($_POST['id']); //エスケープ $query = ' UPDATE bbs SET msg = "' . $msg . '" WHERE id = ' . $id ; $result = $db->query($query);
$msg = $db->escapeString($_POST['msg']); //エスケープ
$id = $db->escapeString($_POST['id']); //エスケープ

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

 

読み込み(SELECT)

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$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 />";
}
$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 />"; }
$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でデータがINSERTできないエラーの原因と対応方法

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

SQLiteでNULL値の検索

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

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

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

データベース管理ツール「Adminer」でSQLite3を使えるようにする方法

SQLite3で作成したデータベース及びテーブルをAdminerから操作したい。 ...

PHPとSQLiteで簡易BBSの作成

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

S