使用预准备语句后返回的记录数

时间:2015-02-17 18:01:53

标签: php prepared-statement

我目前正在参加一个IT课程,在这个课程中,人们可以携带他们的计算机,课程也可以用来获得经验。现在,教师让客户填写一张纸,上面写着他们的姓名,电话号码和电脑的问题。但是,他想使用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);

我这样做了吗?

非常感谢任何和所有帮助。

克里斯

1 个答案:

答案 0 :(得分: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.
}

解决方案一个更快,只返回计数。另一方面,解决方案2返回您可能想要显示的所有细节。