PHP+SQLite:条件式の使い方

(1/1)
SQLのSELECT文とWHERE句を使い、条件に合ったレコードを抽出、表示するプログラムを作ってみることにする。

(2022年11月13日)PHP8対応,他.

目次

サンプル・プログラムの実行例

PHP+SQLite:条件式の使い方

サンプル・プログラム

圧縮ファイルの内容
whare1.phpサンプル・プログラム本体 (1)。
whare2.phpサンプル・プログラム本体 (2)。
このプログラムは、1530年以降に生まれた者を抽出、表示するものである。

解説:抽出条件指定とWHERE句

  51: //実行するSQL
  52: define('SQL', 'SELECT * FROM chronologic WHERE birth >= 1530;');

前回、WHERE句の後に '1' を置いているのは、「常に条件が成立する」という意味と説明した。じつは、WHERE句に条件式を記述することで、レコードを抽出する条件を指定できる。
SELECT * FROM chronologic WHERE birth >= 1530;
これは、birthの値が1530以上、つまり、1530年以降に生まれた者を抽出せよという意味を表したSQL文である。
これを使えば、目的の一覧表を作成することができる。

サンプル・プログラム:複合条件

このプログラムは、1530~1549年の間に生まれた者を抽出、表示するものである。

解説:複合条件

  50: //実行するSQL
  51: define('SQL', 'SELECT * FROM chronologic WHERE (birth >= 1530) AND (birth <= 1549);');

「1530~1549年の間に生まれた者」というのは複合条件である。つまり、「1530年以降に生まれた者」かつ「1549年以前に生まれた者」というように分解できる。
SELECT * FROM chronologic WHERE (birth >= 1530) AND (birth <= 1549);
日本語の「かつ」に相当する条件式は AND である。これは、PHPの論理式と同じ意味であるから、分かりやすいと思う。

応用:BETWEEN演算子

SQLでは、「1530~1549年の間に生まれた者」をそのまま表現できる BETWEEN演算子というものがある。BETWEEN演算子を使うと、
SELECT * FROM chronologic WHERE birth BETWEEN 1530 AND 1549;
と表現できる。
前述の複合条件と使った場合と同じ結果が得られる。

参考サイト

(この項おわり)
header