Количество записей, возвращенных после использования подготовленной выписки

0

В настоящее время я занимаюсь ИТ-курсом, в котором люди могут приносить свои компьютерные программы, а класс работает над ними, чтобы получить опыт. В настоящее время у инструктора есть клиенты, заполняющие листок бумаги с указанием их имени, номера телефона и компьютера (ов). Тем не менее, он хотел бы использовать страницу PHP, чтобы позволить студентам или самим оглянуться назад, чтобы узнать, что это за предыдущие предыдущие проблемы (если они есть). Я использую PDO и подготовленные инструкции для запроса базы данных, но мне трудно понять, как получить количество записей, возвращаемых подготовленным оператором. Я пробовал использовать stmt_num_rows, но он, похоже, не работает. Вот код, который у меня есть до сих пор:

$custID = $_GET["id"];
$compID = $_GET["compID"];

$stmtIssues = $db->prepare("SELECT IssueID, DateRequested, Issue, ActionsTaken FROM ISSUES WHERE ComputerID=:compID AND CustomerID=:custID ORDER BY DateRequested");
$stmtIssues->bindParam(":custID", $custID);
$stmtIssues->bindParam(":compID", $compID);

$stmtIssues->execute();
$numIssues = stmt_num_rows($stmtIssues);

Правильно ли я это делаю?

Всем приветствуется всяческая помощь.

Крис

  • 0
    Я думаю, что вы найдете свой ответ здесь: php.net/manual/en/pdostatement.rowcount.php
  • 0
    ОК, я изменил код на следующее:
Показать ещё 2 комментария
Теги:
prepared-statement

1 ответ

0

Вы могли бы сделать несколько вещей:

Решение первое, если вы просто хотите подсчет, пусть база данных будет считаться для вас:

$stmtIssues = $db->prepare("SELECT COUNT(IssueID) FROM ISSUES WHERE ComputerID=:compID AND CustomerID=:custID ORDER BY DateRequested");
$stmtIssues->bindParam(":custID", $custID);
$stmtIssues->bindParam(":compID", $compID);
$stmtIssues->execute();
$numIssues = $stmtIssues->fetchColumn(); 

Решение второе, если вы собираетесь отображать результаты в дополнение к счету:

$stmtIssues = $db->prepare("SELECT IssueID, DateRequested, Issue, ActionsTaken FROM ISSUES WHERE ComputerID=:compID AND CustomerID=:custID ORDER BY DateRequested");
$stmtIssues->bindParam(":custID", $custID);
$stmtIssues->bindParam(":compID", $compID);

$stmtIssues->execute();
$rows = $db->fetchAll();
$numIssues = count($rows);

foreach ($rows as $row) {
  echo $row['IssueID']; // you can add other columns and/or formatting here too.
}

Решение одно быстрее и возвращает только счет. Решение второе, с другой стороны, возвращает все детали, которые вы можете отобразить.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню