PHP PDO相当于mysql_num_rows

时间:2014-01-02 18:17:48

标签: php mysql pdo

我正在使用此PDO查询从数据库中进行选择:

$stmt = $pdo_conn->prepare("select * from tickets where ticketnumber = :seq ");
$stmt->execute(array(':seq' => $_GET["seq"]));
$ticket = $stmt->fetch();

但是我无法获得与mysql_num_rows

等效的内容

我尝试过:

$stmt = $pdo_conn->prepare("select COUNT(*), * from tickets where ticketnumber = :seq ");
$stmt->execute(array(':seq' => $_GET["seq"]));
$ticket = $stmt->fetch();
$num_rows = $stmt->fetchColumn();
echo $num_rows;

2 个答案:

答案 0 :(得分:3)

你还在看手册吗?

http://us1.php.net/mysql_num_rows

  

警告   自PHP 5.5.0起,此扩展已弃用,将来将被删除。相反,应该使用MySQLi或PDO_MySQL扩展。另请参阅MySQL:选择API指南和相关的常见问题解答以获取更多信息。该功能的替代方案包括:   mysqli_stmt_num_rows()   PDOStatement对象:: rowCount时()

http://us1.php.net/manual/en/pdostatement.rowcount.php

请参阅:示例#2计算SELECT语句返回的行

使用您的代码:

select COUNT(*) from tickets where ticketnumber = :seq 

您无法同时选择计数和*。该示例显示您选择计数,然后尝试选择您的行。

答案 1 :(得分:1)

首先,您需要执行2个单独的查询来获取行数,因为您无法在同一查询中执行COUNT()*

因此,您将使用以下方式获取行计数:

$stmt = $pdo_conn->prepare("select * from tickets where ticketnumber = :seq ");
$stmt->execute(array(':seq' => $_GET["seq"]));
$ticket = $stmt->fetch();

echo 'Rows: '.$stmt -> rowCount();

更多信息可在手册中找到:PDOStatement::rowCount