2016-03-28 13 views
1

検索後にデータベース内に見つかった行数を表示しようとしています。私は最後の試みだPDO実行後の行数の取得

$city = $_POST['city']; 
$bloodType = $_POST['donorType']; 

    $q = $db->prepare("SELECT count(*) FROM `users` AS numusers WHERE `city` = :city AND `bloodType` = :bloodType"); 
    $q->bindValue(":city",$city,PDO::PARAM_INT); 
    $q->bindValue(":bloodType",$bloodType); 
    $q->execute(); 

    while($row = $q->fetch(PDO::FETCH_ASSOC)){ 
    echo "<p align='center'><h5> There is/are <span class='red-text'>".$row['numusers']."</span> available donor(s) found. 
    You must be a <b><a href='register.php'>registered user</a></b> to view their details.</h5></p>"; 
     } 

は、ここに私のコードです。そして、私はこのエラーメッセージを受け取ります `未定義のインデックス:numusers

どのように私はそのヒントを解決するのですか?クエリ、PDOStatement::fetchColumn()で返される単一の値 -

+0

これは、numusersとしてSELECT count(*)のようにする必要があります。 – Indrajit

答えて

2

ただ、この種のデータを取得するためにPDOでの特別な方法がありますそれは

$q = $db->prepare("SELECT count(*) AS numusers FROM `users` WHERE `city` = :city AND `bloodType` = :bloodType"); 
+0

'あなたはSQL構文に誤りがあります。あなたのMariaDBサーバのバージョンに対応するマニュアルをチェックし、適切な構文を使用して 'AS' numusers''ユーザー 'WHERE' city' = '3' AND 'bloodType' = '4'''を使用するようにしてください。このエラーメッセージが表示されます – Jerlon

+1

remove 'numusers'からのバックチックは' SELECT count(*)as numusers..'を使用します。 – Saty

+0

まだ未確認のインデックスです。 – Jerlon

1

だろうcount(*)

SELECT count(*) AS numusers.. 

のエイリアスを作成します。だから、エイリアスを悩ます必要はありません。

さらに、whileループはここでは不要です。

$city = $_POST['city']; 
$bloodType = $_POST['donorType']; 

$q = $db->prepare("SELECT count(*) FROM `users` WHERE `city` = :city AND `bloodType` = :bloodType"); 
$q->bindValue(":city", $city, PDO::PARAM_INT); 
$q->bindValue(":bloodType", $bloodType); 
$q->execute(); 
$numusers = $q->fetchColumn(); 

echo "<p align='center'><h5> There is/are <span class='red-text'>$numusers</span> available donor(s) found. 
You must be a <b><a href='register.php'>registered user</a></b> to view their details.</h5></p>"; 
+0

うわー:Dありがとう:D – Jerlon

関連する問題