パソコンQ&A

OpenPNE DB関連の関数

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言語しか使わないならルール無視でもよい)

このページはリンクフリーです。設定などは自己責任で…
Copy Right kikky

kikky.net