SELECT COUNTで取得した結果の表示
phpで検索結果画面の制作を勉強中です。
pdoでmysqlデータベースに接続しています。
現在、検索フォームの作成を勉強中です。
検索用のフォームに入力された文字に類似しているという条件(あいまい検索)のもと、
添付画像の上のようなデータベーステーブル内をSELECT COUNTし、
添付画像の下のように、検索に該当するそれぞれのカラムのデータと、そのデータがいくつ存在しているのかを表示させたいです。
SELECT COUNTでGROUP BYを使用すれば結果が取得できると教えていただき、以下のようなphpを記述しました。
//フォームに入力されたテキストをGETで渡し、プログラムで取得し、あいまい検索に対応させる。
$search = '%'.$_GET['search'].'%';
//現在表示している結果表示ページのページ数をURLから取得
$page = $_GET['page'];
//SQLのLIMIT句用にデータのいくつめから取得するか$limitに入れる
$limit = ($page-1) * 20;
//該当するものをグループ化し、それぞれのデータ数をカウントする
try{
$stmt=$db->prepare('SELECT COUNT 【住所】 FROM 【顧客情報】 WHERE search like :search GROUP BY 【住所】 LIMIT :limit , 20');
$stmt->bindValue(':search',$search,PDO::PARAM_STR);
$stmt->bindValue(':limit',$limit,PDO::PARAM_INT);
$stmt->execute();
}catch(PDOException $e){
$error = "エラー:".$e->getMessage();
}
while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
print $row['【住所】'];
}
※検索フォームのタグは省略しています。
※データベース接続は$dbで行っています。
※該当したデータを1ページにつき、20件ずつ表示したいのでLIMIT句を使用しています。
実行したところ、結果はおろか、エラーも何も表示されませんでした。
個人的にはSQL文に間違えがあるというよりも、
while文以降で取得したデータの表示ができていないのではないかと思いますが、
「SELECT COUNT」の結果表示の方法をネットで調べても
答えになるものが中々見つかりませんでした。
また、添付画像の下のように、
取得したデータ名とそのデータの件数を一緒に表示するプログラムが理想なので、
どなたかご教授頂けると有難いです。
ご回答、よろしくお願いします。
※ちなみに、正規化については理解しておりますが、今回は例示として住所を使用しました。
お礼
情報ありがとうございます。 参考に調査を行ってみたいと思います。