このエントリーをはてなブックマークに追加 Twitterでツイート $wpdb->get_resultsにたどり着く

WordPressには、投稿やコメントだけでなく、カテゴリやタグなどさまざまな情報を取得する関数が用意されているのですが、少し複雑な条件で情報を取得するにはSQLを使う選択肢もあります。その場合、PHPのmysql_query関数を利用してもいいのですが、テーマの中なのでグローバル変数$wpdbを利用するのがよさそうです。

$wpdbにはWordPressで使用しているデータベース関連情報が格納されていて、インストール時に設定したプレフィックスを含んだテーブル名も含まれています。メンバー変数の$wpdb->postsには投稿記事データが格納されているテーブル名、$wpdb->postmetaならカスタムフィールドデータが格納されているテーブル名といった感じです。

また、mysql_query関数とmysql_fetch_array関数を組み合わせたようなget_results関数も用意されています。使い方はmysql_query関数と同様で、

$result = $wpdb->get_results("SELECT id,post_title FROM $wpdb->posts");
foreach ($result as $row) {
	print('<li>'.$row->id.':'.$row->post_title.'</li>');
}

といった具合に、直接SQLをパラメータとして指定できます。
戻り値の$resultには、クエリの結果がオブジェクトの配列として格納されます。mysql_fetch_array関数と異なり、連想配列ではなく、オブジェクトなのがポイントでしょうか。テーブルのカラム名(かASで設定した別名)がそのままメンバー変数になるので、取り扱いは便利だと思います。

実際のところ、SQLを使わなければならないシーンはそれほど多くはないと思いますが、知っておいて損はないと思います。

p.s.MySQL 5系ってconditionは予約されたんですかね。別名で使おうとしたらエラーになっちゃって、あわててバッククォート(`)で囲みましたよ^^;

投稿日:2009年9月15日
  • ※コメントは、スパム対策などのためIPアドレスにて制限しております。
  • ※誹謗や中傷、スパムなど、不適切な内容は公開いたしません。ご了承ください。