db_get_one($sql, $params = array(), $dsn_name = 'main_reader')
selectによって最初に得られたレコード情報のカラム値が返る
複数のカラムが得られたときには、最初に得られたカラムの値のみ返る
値
db_get_row($sql, $params = array(), $dsn_name = 'main_reader')
selectによって最初に得られたレコード情報が1つ返る
配列[【カラム名】]
db_get_col($sql, $params = array(), $dsn_name = 'main_reader')
selectによって得られた全てのレコード情報のカラム値が返る
複数のカラムが得られたときには、最初に得られたカラムの値のみ返る
配列[【インデックス】]
db_get_col_limit($sql, $from, $count, $params = array(), $dsn_name = 'main_reader')
db_get_col()関数のLimit句がついたもの
db_get_col_page($sql, $page, $count, $params = array(), $dsn_name = 'main_reader')
db_get_col()関数をpageによって分けたもの
$page:ページ番号[1〜]
$count:1ページに表示させる数
db_get_assoc($sql, $params = array(), $dsn_name = 'main_reader')
selectによって得られた全てのレコード情報が返る
2つのカラムが得られた場合は配列キーに1つ目のカラム値、配列値に2つ目のカラム値の連想配列[【1つ目のカラム値】]=2つ目のカラム値となる
2カラムのカラムが得られたときには、配列キーにカラム名が加わり2次元配列となる連想配列[【1つ目のカラム値】][【2つ目のカラム名】]=2つ目のカラム値となる
db_get_assoc_limit($sql, $from, $count, $params = array(), $dsn_name = 'main_reader')
db_get_assoc()関数のLimit句がついたもの
db_get_all($sql, $params = array(), $dsn_name = 'main_reader')
selectによって得られたレコード情報が全て返る
配列[【インデックス】][【カラム名】]
db_get_all_limit($sql, $from, $count, $params = array(), $dsn_name = 'main_reader')
db_get_all()関数のLimit句がついたもの
db_get_all_page($sql, $page, $count, $params = array(), $dsn_name = 'main_reader')
db_get_all()関数をpageによって分けたもの
$page:ページ番号[1〜]
$count:1ページに表示させる数
db_query($sql, $params = array())
クエリを送る
この返り値にはDBのパスワードなど接続情報も含まれるため注意
db_insert($table_name, $fields_values, $pkey = null)
$data = array( 'c_member_id_from' => intval($c_member_id_to), 'c_member_id_to' => intval($c_member_id_from), 'r_datetime' => db_now(), 'intro' => '', ); db_insert('c_friend', $data);
返り値はインサートされたID
db_update($table_name, $fields_values, $where)
$data = array( 'intro' => $intro, 'r_datetime_intro' => db_now(), ); $where = array( 'c_member_id_from' => intval($c_member_id_from), 'c_member_id_to' => intval($c_member_id_to), ); db_update('c_friend', $data, $where);
返り値はtrue、false
db_affected_rows()
1つ前に実行されたSQL文で変更のあった行数を返す。db_now()
0000-00-00 00:00:00の型の日付を返す
SQLにより得られる時間ではなく、PHPによる時間
db_order_by_rand()
$sql .= db_order_by_rand();
selectの出力をランダムにする。
SQL文の最後に追記するようにして使用する。
SELECT、INSERT、UPDATEの関数はあるが、DELETE関数はない DELETEはqueryを使用する必要がある。
insert関数の返り値はインサートされたIDが返る。
つまりはAUTO_INCREMENTキーのないテーブルにインサートした場合、返り値は0となり、正誤判断はできない。
インサートに失敗したときはnullが返り、PHPではブランクと判断される。
ブランクも0もfalseの扱いになる。
SQL文の生成について
- $sql内に?を入れ、$paramsに?に相当する値を入れるのがルール。
- SQLのエスケープを行うため。$sql内の命令文はエスケープされないが、$paramsにより挿入される値はエスケープされる。
- $paramsにより挿入される値が、数値であればクオテーションなし、文字列であればシングルクオテーションで囲まれる。
- シングルクオテーションで囲まれるため、カラム名などを$paramsで送ることはできない。
- 生成されるSQL文が見たい場合にはdb_query($sql, $params = array())の返り値をみるとよい。
(この返り値にはDBのパスワードなど接続情報も含まれるため注意) - SQL文の確認のためにdb_query()を使用する場合は、返り値配列の["query"]のみを出力すること。
- OpenPNEではSQL言語をMySQL、PostgreSQLに対応させるため共通命令文しか使わないようにしている。
(カスタマイズで1つのSQL言語しか使わないならルール無視でもよい)