【wordpressでDBの値取得(SQL)】データベースから欲しい値、レコードを取り出す方法

Contents
wordpressでデータベースから欲しい値を取得する
今回はwordpress上で、データベースを操作して欲しい値を取得する方法のついて書いていきます。
wordpressでのデータベースは、基本的にはSQLと言う言語で操作します。
データベースの基本的なことについてはこちらの記事で書いているので、もし詳しく知らない方はぜひこちらもお読みください。
wordpressで、データベースを操作するにはphpMyAdminでの操作が簡単です。こちらについても記事で書いています。
今回はwordpress上で、phpMyAdminなどを使わず、直接phpとSQLでデータベースを操作する方法についてご紹介します。
データベース操作の方法については、記事がいくつあっても書ききれないほどあるのですが、今回は値の取り出しの方法について書いていきます。
基本的なことなのですが、wordpressでのデータベースの操作は少し特殊でもあるのですぐ忘れてしまいがちでもあります。
知らない人はぜひ、こちらの記事を参考に書き方を覚えて行って頂ければと思います。
それでは見ていきましょう。
wordpressでデータベース操作する際に必要なこと
wordpressでの、データベースの取り扱いは他のフレームワークを利用するときと同じ様に、特殊な書き方をするのですが、基本的にはSQLを書いて処理を実行していきます。
wordpressでデータベースを操作する時に、必ず書いて置く必要のある”データベースを操作します”と行った宣言の様な記述があります。
global $wpdb;
というものを、データベース操作の記述の前に書いておきます。
そしてこの下にSQL文などを書くことで、データベースの処理が可能になるのですが、もう一つwordpress特有の書き方があります。
wordpressでSQL文を書く際に書かなければいけないのが、
$wpdb->
といった記述です。これも上と同じく宣言の様なもので、これともう一つ下で説明するget_rowやget_resultsなどを組み合わせて、SQL文を書くことでデータベース処理が可能になります。
この様な感じです。
$wpdb->get_row("SELECT * FROM users WHERE id = 10");
では、詳しく書き方を見ていきましょう。
取得したい値の入ったカラムのレコードを取り出す
それでは、ここから具体的なデータベース操作の方法について見ていきましょう。
まずは自分が欲しい値が入ったカラムのレコードを取り出す記述から
wordpressでは、この様に記述します。
$wpdb->get_row()
このget_row()の中にSQL文を記述します。
例えば、usersテーブルのidが3のユーザのレコードを取り出す場合、
$wpdb->get_row("SELECT * FROM users WHERE id = 10");
となります。
この場合、取り出した値は配列となるので、特定の値を取り出す場合は、
$user_record = $wpdb->get_row("SELECT * FROM users WHERE id = 10");
$user = $user_record -> username
といった記述になります。
取得したい値の入ったカラムの値を一つだけを取り出す
上では、指定のレコードのについて全ての情報を取得する方法を書きました。
今回は、値を一つだけ取得する書き方をご紹介します。
上の書き方と少し似ているのですが、この様に書きます。
$wpdb->get_var()
字のままではあるのですが、
そして上と同じく()の中にSQL文を書き込んでいきます。
これは、欲しい情報を持っているカラムの最大の値や、合計値を取り出したりする時に有効です。
SELECT count(*)
や
SELECT MAX
などのSQL文と一緒に使うことが多いです。
取得したい値の入ったレコード全てを取り出す
ここでは、get_rowが一つのレコードだけだったのに対して、条件に当てはまるレコードを全て取得することができます。
記述はこの様になります。
$wpdb->get_results()
この場合、get_rowと同じく取り出す値は配列となるのですが、もう一つ配列が重複することになります。
例えば、
$user_record = $wpdb->get_row("SELECT * FROM users WHERE age = 10");
の場合、レコードが複数あるのでここから特定の値を取り出す場合は、
$user_record = $wpdb->get_row("SELECT * FROM users WHERE age = 10");
$user = $user_record[0]
の様に、処理をかけるレコードを指定する必要があります。
まとめ
いかがでしょうか。今回は、wordpressでデータベースを操作して欲しい値を取得する方法について書きました。
データベース操作の中では、基本的な操作ですが、wordpress特有の少し特殊な書き方でもあるので、やや覚えにくいかもしれないです。
またデータベースの操作方法については、他の記事でも少しずつ書いていきます。
データベースについてあまり詳しくない方は是非、参考にしてみてください。