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');