前回までのおさらい
今回はsqlを使ってデータベースから条件を複数指定してデータを取得する話をしていきます。
前回は投稿記事をselect文で条件を指定してデータをとってくる話 wordpressのためのsql
前々回は投稿記事をselect文で全データをとってくる話 wordpressのためのsql
データベースから投稿記事(固定ページを含む)をすべて取得するsql
復習になりますが、データベースから投稿記事(固定ページを含む)をすべて取得するsqlは、
$sql = "SELECT * FROM wp_posts";
でしたね。
簡単に訳すと「wp_postsから*(全てのカラム)を選びます」ですね。
「SELECT 欲しい列名 FROM テーブル名」
条件を指定してデータベースから投稿記事を取得する
条件を指定してデータベースから投稿記事を取得する場合は
$id = 1; //投稿ID $sql = "SELECT * FROM wp_posts WHERE id =".$id;
又は
$sql = "SELECT * FROM wp_posts WHERE id = 1";
簡単に訳すと「wp_postsからidが1のものの*(全ての列)を選びます」ですね。
WHEREで条件を指定します。
複数条件を指定してデータを取得する
今回は複数条件を指定します。
例えば、公開済みの投稿記事でかつ固定ページの記事を取得したい場合のsqlは下記のようになります。
$sql = "SELECT * FROM wp_posts WHERE post_status = 'publish' //「公開済み」を指定する AND post_type = 'page' "; //「固定ページ」を指定する
条件を複数指定する場合はWHERE ??=”??”の後にANDをつけます。
簡単に訳すと「wp_postsから公開済みの固定ページのものの*(全ての列)を選びます」ですね。
wp_postsテーブルのpost_status=”publish”は公開済みの記事を取得するという意味です。
ほかにも、post_status=”private”だったりがあります。ちなみに”private”は非公開の記事を取得します。
AND post_type = 'post' "; //「投稿記事」を指定する
上記が投稿記事を指定するsqlです。
今回は以上となります。
補足:条件は1つでも同じ
補足1
$sql = "SELECT * FROM wp_posts WHERE post_status = 'publish' ";
条件を1つだけにするともちろん、上記のsqlは公開済みの記事をすべて取得するとなります。
同じく
$sql = "SELECT * FROM wp_posts WHERE post_type = 'page' ";
のようにするともちろん、上記のsqlは固定ページの記事をすべて取得するとなります。
補足:条件指定の際の注意点
補足2
条件を指定する際、文字列には、'(シングルクォーテーション)又は”(ダブルクォーテーション)で囲います。
注意して欲しいのは
下記のように記述した場合です。
$sql = "SELECT * FROM wp_posts WHERE post_status = "publish" AND post_type = "page" ";
上記のように”(ダブルクォーテーション)や'(シングルクォーテーション)のみで指定してしまうと、エラーになります。
“(ダブルクォーテーション)で囲っているところが文字列だと認識しますので上記の場合
$sql = " /*ここから*/ SELECT * FROM wp_posts WHERE post_status = /*ここまでが文字列*/ " publish " /*ここから*/ AND post_type = /*ここまでが文字列*/ " page " /*ここから*/ /*ここまでが文字列*/ ";
のように認識されてしまいます。
2年くらい前に私は下記の本で勉強しました。(初版)
|
|