ワードプレスの$wpdbを使用し抽出(SELECT)してみよう!
今回の記事では、ワードプレスに用意されているwpdbクラスについて説明していきます。
wpdbクラスはデータベースを操作するためのクラスで様々な関数が用意されています。
データベースに接続するためのデータベースアクセスクラスを自前で用意しようとすれば少々手間なので元々用意されているのは非常にありがたいですね。
それではwpdbクラスの使用方法を見ていきましょう。今回は抽出編です。
wpdbクラスの使い方
下準備
下準備としてwpdbクラスを使用するにはまず、使用するファイルにグローバル変数として$wpdbを宣言する必要があります。
global $wpdb
これでインスタンスを使用することができます。
それではシンプルなものから説明していきたいと思います。
複数件の結果を取得する
まず複数件の結果を取得したいと思います。
複数件の結果を取得するには
$wpdb -> get_results( $query , $output_type );
とします。
$queryにはSQL文、$output_typeには結果をどのような配列で受け取るかを指定します。
$output_typeは省略可能で省略した場合結果はobjectになります。
また指定するtypeは4種類あります。
- OBJECT(行オブジェクト・インデックス配列)
- OBJECT_K(カラムの値をキー、行オブジェクトを値とする連想配列)
- ARRAY_A(キーがカラム名で、要素は一行を表す連想配列・インデックス配列)
- ARRAY_N(要素は一行を表すインデックス配列)
上記以外のtypeを指定すると戻り値はNULLになります。
一件のみ取得する
次に一件のみ取得する関数ですが
$wpdb -> get_row( $query , $output_type , $row_offset );
を使用します。
$queryと$output_typeに関しては複数取得する際と同じで$row_offsetには必要としている行のオフセット(整数) を指定します。初期値は0です。
1つ覚えてしまえば他は簡単です。
値が1つの結果を取得する
値が1つの結果を取得するには
$wpdb -> get_var( $query , $column_offset , $row_offset );
を使用します。
$queryには同じくクエリが入り、$column_offsetには必要としている列のオフセット、$row_offsetには行のオフセットを指定します。
$column_offsetと$row_offsetはどちらも初期値は0です(整数)。
特定の列を取得する
特定の列を取得するには
$wpdb->get_col( $query, $column_offset );
を使用します。
他の取得パターンとほぼ同じ引数なのでもう説明する必要はないですね。
まとめ
ここまで一通りのwpdbを使用した取得方法を紹介してきましたが、SQLを使用する際に考慮する点があります。
それが、SQLインジェクションです。
SQLインジェクションについては長くなりそうなので別の記事にて紹介したいと思います。
また今回は取得方法しか言及しませんでしたが、他にもdeleteやupdateなども行えるので、そちらも別の記事にてまとめたいと思います。
ではまた!
この記事を書いた人
大西照
株式会社Esolab 代表取締役