Google Crisis Response(Google)
災害に関する情報源や、行方不明者情報の収集と検索を行う『パーソンファインダー』を初めとするツールの提供が行われています。

2007年4月1日 日曜日

データベースアクセス

Filed under: リファレンス
時間:11時45分
投稿者:よしとも
AddClips 経由でソーシャルブックマークに登録

 データベースアクセス関係のリファレンス情報です。すべての情報を含んでいるわけではありません。

 データベースにアクセスするには、グローバス変数 $wpdb に格納された wpdb クラスのオブジェクトインスタンスを経由します。クラスの定義は、2.0.x ME では wp-includes/wp-db.php にあります。

汎用的な SQL クエリを発行する

 汎用的な SQL 文によるクエリ発行には、 query メソッドを使用します。ほかのクエリ系メソッドのベースとなるメソッドで、最後のクエリの結果はキャッシュされます。

  1. /**
  2.  * @param String query SQL文
  3.  */
  4. $wpdb->query(query);

 クエリが INSERTDELETEUPDATEREPLACE の場合は変更された数を、それ以外では得られた結果の行数を返します。WordPress Codex では SQL 文にエラーがあると FALSE を返すとありますが、コードを見た感じでは 0 になるようです。0 == FALSE は真ですが、0 === FALSE は偽なので注意が必要です。

行と列を指定して1つだけ値を得る

 クエリ結果の一部だけほしい場合には、get_var メソッドを使います。

  1. /**
  2.  * @param String query SQL文 @default null
  3.  * @param Int column_offset 列 @defaul 0
  4.  * @param Int row_offset 行 @default 0
  5.  */
  6. $wpdb->get_var(query, column_offset, row_offset);

 querynull を指定すると、直前のクエリ結果を参照します。null でない場合は、内部で query メソッドが呼ばれます。
 column_offsetrow_offset の指定位置が正しくない場合は null を返します。

SELECT する

 SELECT によるクエリをするには、get_results メソッドを使います。

  1. /**
  2.  * @param String query SQL 文
  3.  * @param String output_type 定数 OBJECT・ARRAY_A・ARRAY_N のどれか @default OBJECT
  4.  */
  5. $wpdb->get_results(query, output_type);

 querynull のときは直前のクエリの結果を、null でない場合は内部で query メソッドを呼び出します。
 output_typeOBJECT のときはオブジェクト形式で、ARRAY_A のときは連想配列で、ARRAY_N のときは通常の配列で結果を返します。ARRAY_AARRAY_N では変換処理が入るので、パフォーマンスは OBJECT が一番よさそうです。

クエリ時のテーブル名について

 WordPress では、データベーステーブルの名前に接頭辞をつけることができます。この接頭辞はセットアップのときにユーザーが指定するので、テーブル名は環境依存となります。不特定多数に配布するプラグインではこれはかなり困ったことになってしまいますが、wpdb クラスのメンバ変数がテーブル名を保持しているので、それを使うことで解決できます。

 たとえば、コメントのテーブル名は、$wpdb->comments で得ることができます。

Comments (0)

カテゴリー『リファレンス』を追加

Filed under: リファレンス,雑多
時間:11時41分
投稿者:よしとも
AddClips 経由でソーシャルブックマークに登録

 プラグインカテゴリーの下に、リファレンスというカテゴリーを追加しました。

 このカテゴリーには、私が WordPress プラグインを作成するときに調べたことをメモとしてまとめた記事を入れて行きます。関連したことがまとめて見れたほうがいい気がするので、1つの記事に詰め込んでしまいます。重くなってしまったときはまた考えます・・・。
 一応調べることが目的なので、記事のために調べるということはやらないつもりでいます。逆に言えば、記事が増えたら何か新しいことをやろうとしてるんだなと思ってください。

Comments (0)

HTML convert time: 0.267 sec. Powered by

Images is enhanced with WordPress Lightbox JS by Zeo