ラベル SQLite の投稿を表示しています。 すべての投稿を表示
ラベル SQLite の投稿を表示しています。 すべての投稿を表示

2014年9月27日土曜日

SQLite でテーブルに複数レコードを追加するクエリ

Values に追加するレコード情報をカンマ区切りで複数記述することで OK です。

INSERT INTO BuyList
(Category, ItemName, ShopName, Date, Cost)
VALUES
('Category1', 'Item1', 'Shop1', '2014-09-15', 1980),
('Category2', 'Item2', 'Shop2', '2014-09-28', 570)

参考ページ
Is it possible to insert multiple rows at a time in an SQLite database?
http://stackoverflow.com/questions/1609637/is-it-possible-to-insert-multiple-rows-at-a-time-in-an-sqlite-database

2014年9月7日日曜日

SQLite 今月の全件データを取得する SQL 文

今月の合計を取得したくて調べました。

BuyList テーブルの Date 列データが今月のリストを表示する SQL 文です。

'今月の全件データを表示
select * from BuyList where Date between date ('now', 'start of month') and date ('now', 'start of month', '+1 month', '-1 day')

'今月の集計データは SUM 関数を組み合わせて取得
select SUM(Date) from BuyList where Date between date ('now', 'start of month') and date ('now', 'start of month', '+1 month', '-1 day')

参考ページ
the sqlite common sql statement
http://www.databaseskill.com/1046790/

2014年8月30日土曜日

SQLite オートインクリメント(自動採番)

SQLite では行 ID となる項目に対して値を設定しなければ、SQLite 側でオートインクリメントしてくれるようです。
例えば下記のようなテーブルがあるとします。


ID Category Item
1 カテゴリA アイテムA
2 カテゴリB アイテムB
3 カテゴリC アイテムC
4 カテゴリA アイテムD
5 カテゴリC アイテムE



次のように ID 列に対して値を設定しない INSERT 文を実行することでオートインクリメントが行われます。

$db = new SQLite3('myDB.db');
$db->exec('INSERT INTO BuyList (Category, Item) VALUES ("カテゴリA", "アイテムF")');

Autoincrement In SQLite
http://www.sqlite.org/autoinc.html

2014年8月29日金曜日

PHP で SQLite3 からデータを取得して JSON を出力する

サーバーサイドの PHP で SQLite からデータを取得して、クライアントサイドで JSON としてリターンする例です。

サーバーサイド
SQLite3 データベースからデータを取得して各レコードを配列に追加し、配列を JSON として出力しています。

try {
    $db = new SQLite3('myDB.db');

    // 取得(SELECT)
    $result = $db->query('SELECT ID, Category, ItemName FROM BuyList');
    // 配列を初期化
    $ary = array();
    // 配列にデータベースの各行を追加
    while ($rows = $result->fetchArray()) {
        array_push($ary, $rows);
    }
    // 配列を JSON データとして出力
    echo json_encode($ary, JSON_UNESCAPED_UNICODE);
    $db->close();
} catch (Exception $e) {
    print 'DB接続でエラーが発生';
    print $e->getTraceAsString();
}

クライアントサイド
jQuery で JSON 形式を扱えるようにするために、parseJSON と JSON.stringify を組み合わせました。
なぜこれらを組み合わせないと有効な JSON 形式にならないかはイマイチ謎で、要調査です・・。

$(function() {
    $.ajax({
        type: "POST",
        url: "test.php",
        dataType : "json",
        error: function(e)
        {
            //debugger;
        },
        success: function(data){
            var dt = $.parseJSON(JSON.stringify(data));
            // JSON データを使ったロジックが続く
        }
    });
});

PHP 配列の追加には array_push を使いました。
http://php.net/manual/ja/function.array-push.php