【WordPress】wpdbクラスでデータベースからデータを取得する例

WordPressには、データベースを操作できるwpdbクラスがあります。
今回は、そのwpdbクラスでデータベースからデータを取得する簡単な例となります。
wpdbクラスでデータベースからデータを取得する例
wpdbクラスでは、そのインスタンスとなるグローバル変数の$wpdbオブジェクトにアクセスすることで、データベースを扱えます。
例では、その$wpdbオブジェクトを利用して、postmetaテーブルのすべてのカラムを検索し、次の2つの条件を満たす行をオブジェクトの配列で取得します。
- post_idの値が2
- meta_valueの値に'サンプル'という文字列が含まれる
以下、ソースコードの例となります。
<?php
$id = 2;
$meta_value = 'サンプル';
$query = $wpdb->prepare(
"
SELECT *
FROM $wpdb->postmeta
WHERE
post_id = %d AND
meta_value LIKE %s
",
$id,
'%' . $meta_value . '%'
);
$results = $wpdb->get_results( $query );
?>
上記の例では、wpdbクラスのget_resultsメソッドとprepareメソッドでSQLを利用し、指定したテーブルからデータを取得しています。
SQLでテーブルを検索する方法については、以下のリンク先を参考にしてみてください。
自作テーブルを扱う場合
wpdbクラスで自作テーブルを扱う場合には、wpdbクラスをカスタマイズする必要があります。詳しくは以下のリンク先を参考にしてみてください。
get_results()について
get_results メソッドでは、第1引数に指定したSQLクエリをテーブルに対して実行し、結果を行ごとに配列で返します。
get_results()のパラメーター
get_resultsメソッドのパラメーターはそれぞれ以下となります。
$wpdb->get_results( $query, $output_type );
$query(必須)
実行するSQL クエリ。
$output_type(任意)
戻り値の配列の内容を、以下のいずれかの定数で指定。初期値は OBJECT。
定数 | 戻り値の配列について |
OBJECT | インデックス配列で返し、その配列の値は行のオブジェクト |
OBJECT_K | 配列のキーを第1カラムの値(重複は無視)で返し、その配列の値は行のオブジェクト |
ARRAY_A | インデックス配列で返し、その配列の値は連想配列(キーがカラム名・値がカラムの値) |
ARRAY_N | インデックス配列で返し、その配列の値はインデックス配列(値がカラムの値) |
データベースエラーが発生した場合は、戻り値が空の配列になります。 $query が空文字列であるか、無効な $output_type を指定すると、NULL が返されます。
prepare()について
prepare メソッドは、SQL インジェクション攻撃からクエリを保護するために、プレースホルダーを使用してエスケープしたSQLクエリを返します。
利用できるプレースホルダーは以下となります。
- %s(文字列)
- %d(整数)
- %f(浮動小数点)
SQL インジェクション攻撃については、文末の参考サイト内を確認してみてください。
prepare()のパラメーター
prepareメソッドのパラメーターはそれぞれ以下となります。
$wpdb->prepare( $query, $value_parameter[, $value_parameter ... ] );
$query(必須)
プレースホルダーを使用したSQL クエリ。
$value_parameter(必須)
プレースホルダーへ代入する値を、プレースホルダーごとに指定。また、プレースホルダーを値とした配列を第2引数として指定することも可能。
wpdbクラスで実行したSQLクエリのデータについて
wpdbクラスで実行したSQLクエリのデータは、クラス変数にセットされ取得できます。
以下、SQLクエリのデータを取得できるプロパティの一部の例となります。
最後に実行されたSQLクエリを取得
$wpdb->last_query
最後に実行されたクエリの結果を取得
$wpdb->last_result
まとめ
以上がwpdbクラスでデータベースからデータを取得する簡単な例となります。
wpdbクラスの詳細については、文末の参考サイト内を確認してみてください。