PHP: SQLite3でのSELECT文(データ検索)まとめ
PHPでSQLite3のSELECT文によるデータ検索方法のまとめです。
複数行データ、単一行データ、COUNT(*)によるデータ件数、
LIMITによる件数指定、変数を使ったSELECT文の書き方などを紹介します。
SELECT文まとめ
使用するテーブルとデータ
次のようなテーブル「employee」と データを使ってSELECT文を作成します。
employee: 社員情報テーブル -------------------------------- id : 社員番号 name : 名前 year : 入社年
id | name | year |
---|---|---|
1 | 田中 | 2000 |
2 | 鈴木 | 2001 |
3 | 佐藤 | 2002 |
4 | 山本 | 2003 |
5 | 大田 | 2004 |
複数行
複数行を取得する場合はquery()メソッドを使います。
query()メソッドの検索結果をループで回してデータを取得します。
$result = $db->query("SELECT * FROM employee"); while ($cols = $result->fetchArray()) { echo $cols[0] . "\t"; echo $cols[1] . "\t"; echo $cols[2] . "\n"; }
実行結果
1 田中 2000 2 鈴木 2001 3 佐藤 2002 4 山本 2003 5 大田 2004
単一行・単一列
単一行を取得する場合は、querySingle()メソッドを使います。
$re = $db->querySingle("SELECT name FROM employee WHERE id=1"); echo $re . "\n"; // "田中"
単一行・複数列
複数列を取得する場合は、 querySingle()メソッドの第二引数に"true"を指定します。
$sql = "SELECT name, year FROM employee WHERE id=1";
// 複数列の場合は、trueを忘れずに
$arr = $db->querySingle($sql, true);
print_r($arr);
echo $arr["name"] . "\t";
echo $arr["year"] . "\n";
実行結果
Array ( [name] => 田中 [year] => 2000 ) 田中 2000
データ件数 count(*)
COUNT(*) を使うことでデータの件数を取得することができます。
$sql = "SELECT COUNT(*) FROM EMPLOYEE"; $re = $db->querySingle($sql); echo $re . "\n"; // 5
取得データ件数を指定 LIMIT
select文の検索結果数を指定したい場合は「LIMIT」を使います。 「LIMIT データ件数」とすることで指定できます。
$sql = "SELECT * FROM employee ORDER BY id LIMIT 3"; $result = $db->query($sql); while ($cols = $result->fetchArray()) { echo $cols[0] . "\t"; echo $cols[1] . "\t"; echo $cols[2] . "\n"; }
実行結果
1 田中 2000 2 鈴木 2001 3 佐藤 2002
変数使っててSELECT文を作成
SQL文を直書きするのではなく、 変数の値を使って作成する方法を紹介します。
データの値に変数を使う場合、 データ型が数値かテキスト(文字列)かで書き方が異なります。
データが数値の場合
$num = 1; $sql = "SELECT name FROM employee where id=$num"; $re = $db->querySingle($sql); echo $sql . "\n"; // SELECT name FROM employee where id=1 echo $re . "\n"; // 田中
データがテキスト(文字列)の場合
データがテキスト(文字列)の場合は、 変数部分を''(シングルクォーテーション)で囲みます。
$str = "田中"; $sql = "SELECT id FROM employee where name='$str'"; $re = $db->querySingle($sql); echo $sql . "\n"; // SELECT id FROM employee where name='田中' echo $re . "\n"; // 1