PHP PDO 等效于 mysql_num_rows [重复]
Posted
技术标签:
【中文标题】PHP PDO 等效于 mysql_num_rows [重复]【英文标题】:PHP PDO equivalent to mysql_num_rows [duplicate] 【发布时间】:2014-01-20 06:25:44 【问题描述】:我正在使用此 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;
【问题讨论】:
@sjagr 最好不要发布这个。它已经过时了,所有答案都是错误的。 【参考方案1】:你有没有看说明书?
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
您不能同时选择计数和 *。该示例显示您选择计数,然后尝试选择您的行。
【讨论】:
据我所知,这个特定用户坚决拒绝进行任何手动或谷歌查找。 不知道为什么这个或其他答案被否决了,也许 OP 很生气? @Jessica:可能是因为你建议他们通读一页又一页的手册,而不是仅仅为他们编写代码。【参考方案2】:首先,您需要执行 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
【讨论】:
为什么投反对票?这是正确的答案。 当 PDO 连接的数据库是 MySQL 时,这确实有效。它将为您提供结果中的实际行数。尽管 PHP 手册说它不适用于 MySQL 以外的大多数数据库。甚至在 MySQL 中,它也确实 not 像 MySQL 的FOUND_ROWS()
函数那样运行,它允许您找出如果您没有使用 LIMIT
子句会获得多少行。 dev.mysql.com/doc/refman/5.7/en/…以上是关于PHP PDO 等效于 mysql_num_rows [重复]的主要内容,如果未能解决你的问题,请参考以下文章
php中mysql_num_rows与count(*)的效率对比
PHP mysql_num_rows() 函数 返回结果集中行的数目。