[PHP] SQLite3でのSELECT文(データ検索)

スポンサーリンク

PHPでSQLite3のSELECT文によるデータ検索方法です。
複数行データ、単一行データ、COUNT(*)によるデータ件数、 LIMITによる件数指定、変数を使ったSELECT文の書き方などを紹介します。

使用するテーブルとデータ

次のようなテーブル「employee」と データを使ってSELECT文を作成します。


employee: 社員情報テーブル
--------------------------------
id      : 社員番号
name    : 名前
year    : 入社年

idnameyear
1田中2000
2鈴木2001
3佐藤2002
4山本2003
5大田2004

複数行を取得するSELECT文

複数行を取得する場合は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

単一行・単一列を取得するSELECT文

単一行を取得する場合は、querySingle()メソッドを使います。


$re = $db->querySingle("SELECT name FROM employee WHERE id=1");

echo $re . "\n";  // "田中"

単一行・複数列を取得するSELECT文

複数列を取得する場合は、 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

変数の値を利用してSQL文(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