勉強したことのメモ

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

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

   2024/04/18  SQLite

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

  関連記事

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

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

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

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

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

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

SQLiteでデータがINSERTできないエラーの原因と対応方法

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

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

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