WordPress の PHP で開発する際に、別で用意したデータベースから情報を適切な量を取得する方法を記載します。
取得するデータによって、使う関数を分けることで可読性やデータの取得が楽になります。しっかり使い分けるのが後々よい結果になるでしょう。
サンプルコードを用いて解説していきます。
説明順は目次の通りです。
別データベースへの接続と接続クローズ
// WordPress で用意されている wpdb を使う
global $wpdb;
// ※1-1.アクセス情報
$other_wpdb = new wpdb('DB_USER', 'DB_PASSWORD', 'DB_NAME', 'DB_HOST');
//////////////////////////////////////////////////////
// ここに SQL を書いていく。次の章『SELECTの関数色々』参照 //
//////////////////////////////////////////////////////
// ※1-2.最後は、必ず close
$other_wpdb->close();
※1-1.アクセス情報
‘DB_USER’ : やりたことができる権限を持っているデータベースで登録されている USER ID
‘DB_PASSWORD’ : 上記の USER のパスワード
‘DB_NAME’ : 操作したいデータベースの名前
‘DB_HOST’ : ホスト情報。DBとWordpressが同じサーバーの場合は、『localhost』でOK
※1-2.最後は、必ず close
別の言語でもそうですが、メモリをずっと持ったままにしているのは、予期せぬ問題につながることがあるので、しっかり close で明示的な使用停止をしましょう。
SELECT の関数色々
複数行で複数カラムの取得
// %s であとで値を代入するためのプレースホルダを指す
$sqlStr = 'SELECT id, name, category_id, insert_date FROM information_table WHERE category_id IN (%s, %s)';
// ※2-1.複数行複数カラムは、get_results
$results = $other_wpdb->get_results($wpdb->prepare($sqlStr, '05', '06'));
// ※2-2
foreach ($results as $row) {
echo $row->name;
echo $row->category_id;
echo $row->insert_date;
}
※2-1.複数行複数カラムは、get_results
get_results を使うことで、複数行で複数カラムを取得できます。
結果を取得するときは、※2-2のように for 分で1行ずつ取得するのが簡単です。
1行だけであれば、わざわざ for 分書かなくていいので、その時次の1行で複数カラムを使います。
何行とれるか不明の時は、get_results を使うのもよいでしょう。
1行で複数カラムの取得
// ID が、Primary key であれば、IDを指定すれば1行しか取得できません
$sqlStr = 'SELECT id, name, category_id, insert_date FROM information_table WHERE id = %s';
// ※3-1.1行で複数カラムなら、get_row
$row = $other_wpdb->get_row($wpdb->prepare($sqlStr, '001'));
echo $row->name;
echo $row->category_id;
echo $row->insert_date;
複数行で1カラムだけ
// 複数行で複数カラムと同じ条件ですが、取得したいカラムが name だけ
$sqlStr = 'SELECT name FROM information_table WHERE category_id IN (%s, %s)';
// ※4-1.複数行1カラムは、get_col
$names = $other_wpdb->get_col($wpdb->prepare($sqlStr, '05', '06'));
// ※4-2
foreach ($names as $name) {
echo $name;
}
1つのデータだけ
// 該当するデータ量を取得する
$sqlStr = 'SELECT COUNT(*) FROM information_table';
// ※5-1.データが1行で1カラムなので、get_var
$count = $other_wpdb->get_var($wpdb->prepare($sqlStr));
echo $count;
※5-1.データが1行で1カラムなので、get_var
そのまま値を取得してしまいます。
余計なコードも省けるので、確実に1件の値だけの場合はこれを使用しましょう。
わかりやすいです。
まとめ
WordPress での PHP で開発する際に、データベースから情報を取得する際の方法を記載しました。
可読性や保守性のためにも、しっかり目的をもって関数を使い分け適切なコードを書いた方が後々楽できる事が多いと思います。
しっかり理解して使い分けを行いましょう。
読んで頂き、ありがとうございます。
この記事が誰かにとって、一つの参考となれば幸いです。
新たな知識や技術を習得し続けていきたいです。
コメント