Я пытаюсь показать количество строк, найденных в базе данных после поиска.
Вот мой код:
$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>"; }
Это последняя попытка, которую я сделал. И я получаю это сообщение об ошибке `Примечание: Undefined index: numusers
Как решить эти советы?
Просто создайте псевдоним count(*)
SELECT count(*) AS numusers..
Это было бы
$q = $db->prepare("SELECT count(*) AS numusers FROM `users` WHERE `city` = :city AND `bloodType` = :bloodType");
В PDO существует специальный метод для извлечения данных такого типа – единственное значение, возвращаемое запросом, PDOStatement :: fetchColumn () . Таким образом, вам не нужно хлопотать с псевдонимами вообще.
Кроме того, здесь существует избыточный цикл.
$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>";