a-blog cms でのデータベースあれこれ
a-blog cms でデータベースを扱うための備忘録。
1. テーブルの作成
テーブルを作成する SQL クラスのメソッドはないので、SQL を書いて作成。
$DB = DB::singleton(dsn()); $q = 'CREATE TABLE acms_test(id INT(11) AUTO_INCREMENT NOT NULL, test_name VARCHAR(100), PRIMARY KEY (id));'; $res = $DB->query($q, 'exec');
2. テーブルのフィールドにインサート
SQL クラスは SQL を簡単に記述できるクラス。
$DB = DB::singleton(dsn()); $SQL = SQL::newInsert('test'); $SQL->addInsert('test_name', 'test'); $q = $SQL->get(dsn()); $res = $DB->query($q, 'exec');
$q の値
INSERT INTO acms_test (test_name) VALUES ('test')
3. フィールドから値を取得
$DB = DB::singleton(dsn()); $SQL = SQL::newSelect('test'); $SQL->addSelect('test_name'); $q = $SQL->get(dsn()); $res = $DB->query($q, 'all');
$q の値
SELECT test_name FROM acms_test
取得する値を絞り込む
test テーブルで id が 1 の値を出力する
$DB = DB::singleton(dsn()); $SQL = SQL::newSelect('test'); $SQL->setSelect('*'); $SQL->addWhereOpr('id', 1); $q = $SQL->get(dsn()); $res = $DB->query($q, 'all');
$q の値
SELECT* FROM acms_test WHERE 1 AND id = 1
4. テーブル結合
test テーブルと test2 テーブルがある。
test テーブルの中身(id, test_name, test_2)
- 1 test 2
- 2 test2 1
- 3 test3 1
test2 テーブルの中身(id, test2_name)
- 1 test_name2
- 2 適当
$DB = DB::singleton(dsn()); $SQL = SQL::newSelect('test', 'a'); $SQL->setSelect('id',null,'a'); $SQL->addSelect('test_name'); $SQL->addSelect('test2_name'); $SQL->addLeftJoin('test2', 'id', 'test_2', 'b', 'a'); $q = $SQL->get(dsn()); $res = $DB->query($q, 'all');
出力
array (size=3) 0 => array (size=3) 'id' => string '2' (length=1) 'test_name' => string 'test' (length=4) 'test2_name' => string 'test_name2' (length=10) 1 => array (size=3) 'id' => string '3' (length=1) 'test_name' => string 'test_sample' (length=11) 'test2_name' => string 'test_name2' (length=10) 2 => array (size=3) 'id' => string '1' (length=1) 'test_name' => string 'test' (length=4) 'test2_name' => string '適当' (length=6)
test の test_2 テーブルの値が test2 の id と一致している。
5. フィールド更新
$DB = DB::singleton(dsn()); $SQL = SQL::newUpdate('test'); $SQL->addUpdate('test_name', "new_name"); $q = $SQL->get(dsn()); $res = $DB->query($q, 'exec');