ねっとぱんだ-プログラミング勉強ブログ-

Webデザイン、プログラミングの勉強ブログ。

【PHP】全件抽出と条件付き抽出

全件抽出

fetchAll(PDO::FETCH_ASSOC)
結果に含まれるすべての行を配列で取得。キーと値のペアの配列で帰ってくるよう指定。
$stmt  = $db->query('select * from users');
$users = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($users as $user){
 var_dump($user);
}
//レコードの数を表示
echo $stmt->rowCount().'records found.';

ソースでみると
array(3) {
["id"]=>
string(1) "1"
["name"]=>
string(6) "suzuki"
["score"]=>
string(2) "24"
}
連想配列の一覧がレコードの数だけ表示されている。

条件付き抽出

sqlのwhere句で指定する値を?プレースホルダーにして値を指定する。

$stmt  = $db->prepare('select score from users where score > ?');
$stmt->execute([10]);
}

曖昧検索する場合、%はexecutの方で指定する。

$stmt  = $db->prepare('select name from users where name like  ?');
$stmt->execute(['%s%']);

limitを指定する場合
executeが渡す値は文字列になる。limitは文字列だとエラーになるので数値として渡す。

//nameをアルファベットの降順にして上位3位だけ表示
$stmt  = $db->prepare('select name from users order by name desc limit ?');
$stmt->bindValue(1,3,PDO::PARAM_INT);
$stmt->execute();