2016-03-28 59 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

如何解決提示?

+0

它應該像這樣SELECT count(*)as numusers – Indrajit

回答

2

剛剛創建的count(*)

SELECT count(*) AS numusers.. 

別名這將是

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

'您的SQL語法錯誤;檢查與您的MariaDB服務器版本相對應的手冊,以在'AS'numusers''用戶附近使用正確的語法WHERE'city' ='3'和'bloodType' ='4'''我收到此錯誤消息 – Jerlon

+1

刪除來自'numusers'的倒退只是使用'SELECT count(*)AS numusers..' – Saty

+0

它仍然說不明索引。 – Jerlon

1

中有PDO一種特殊的方法來獲得這種數據 - 通過查詢,PDOStatement::fetchColumn()返回一個值。所以你根本不必爲別名而煩惱。

此外,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