データベースアクセス関係のリファレンス情報です。すべての情報を含んでいるわけではありません。
データベースにアクセスするには、グローバス変数 $wpdb に格納された wpdb
クラスのオブジェクトインスタンスを経由します。クラスの定義は、2.0.x ME では wp-includes/wp-db.php
にあります。
汎用的な SQL クエリを発行する
汎用的な SQL 文によるクエリ発行には、 query
メソッドを使用します。ほかのクエリ系メソッドのベースとなるメソッドで、最後のクエリの結果はキャッシュされます。
/**
* @param String query SQL文
*/
$wpdb->query(query);
クエリが INSERT
・DELETE
・UPDATE
・REPLACE
の場合は変更された数を、それ以外では得られた結果の行数を返します。WordPress Codex では SQL 文にエラーがあると FALSE を返すとありますが、コードを見た感じでは 0 になるようです。0 == FALSE
は真ですが、0 === FALSE
は偽なので注意が必要です。
行と列を指定して1つだけ値を得る
クエリ結果の一部だけほしい場合には、get_var
メソッドを使います。
/**
* @param String query SQL文 @default null
* @param Int column_offset 列 @defaul 0
* @param Int row_offset 行 @default 0
*/
$wpdb->get_var(query, column_offset, row_offset);
query に null を指定すると、直前のクエリ結果を参照します。null でない場合は、内部で query
メソッドが呼ばれます。
column_offset と row_offset の指定位置が正しくない場合は null を返します。
SELECT
する
SELECT
によるクエリをするには、get_results
メソッドを使います。
/**
* @param String query SQL 文
* @param String output_type 定数 OBJECT・ARRAY_A・ARRAY_N のどれか @default OBJECT
*/
$wpdb->get_results(query, output_type);
query が null のときは直前のクエリの結果を、null でない場合は内部で query
メソッドを呼び出します。
output_type が OBJECT
のときはオブジェクト形式で、ARRAY_A
のときは連想配列で、ARRAY_N
のときは通常の配列で結果を返します。ARRAY_A
と ARRAY_N
では変換処理が入るので、パフォーマンスは OBJECT
が一番よさそうです。
クエリ時のテーブル名について
WordPress では、データベーステーブルの名前に接頭辞をつけることができます。この接頭辞はセットアップのときにユーザーが指定するので、テーブル名は環境依存となります。不特定多数に配布するプラグインではこれはかなり困ったことになってしまいますが、wpdb クラスのメンバ変数がテーブル名を保持しているので、それを使うことで解決できます。
たとえば、コメントのテーブル名は、$wpdb->comments
で得ることができます。