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