gpt4 book ai didi

php - 高效地从 Select 语句中获取行数

转载 作者:行者123 更新时间:2023-11-29 05:38:48 25 4
gpt4 key购买 nike

直到最近,我一直在使用 mysql_real_escape_string() 来修复我的大部分变量,然后再对我的数据库进行 SQL 查询。一位 friend 说我应该改用 PDO 的准备好的语句,所以在阅读了一些关于它们的内容后,我现在转向使用它们。

到目前为止,我在切换时只遇到过一个问题,那就是计算 SELECT 语句返回的行数。有时在我的代码中,我会运行一个 SQL 查询,然后计算从 SELECT 语句返回的行数。根据是否返回结果集,我会采取不同的操作。有时我确实需要使用它的结果集。 MySQL 让我在 mysql_num_rows() 之后直接进入 mysql_fetch_assoc() 没有问题。但是,PDO 似乎没有像 mysql_num_rows() 这样的东西。

我一直在阅读一些关于 SO 的回复,它们给了我一个解决方案,在 SQL 语句中使用 COUNT() 或使用 PHP 函数 count() 在结果集上。如果我在某些地方不需要结果集,COUNT() 可以在 SQL 语句中正常工作,但是,有几个人提到使用 count()结果集相当低效。

所以我的问题是,如果我需要计算所选行的数量(如果有),然后使用结果集运行脚本,我应该怎么做?在这种情况下,对结果集使用 count() 是唯一的方法,还是有更有效的方法?

下面是一个类似于我之前的 SQL 代码的简短示例:

$query=mysql_query('SELECT ID FROM Table WHERE Name='Paul' LIMIT 1);

if(mysql_num_rows($query)>0)
{
print_r(mysql_fetch_assoc($query));
}
else
{
//Other code.
}

谢谢。

编辑

我知道您在计算结果集之前在语句中使用了 fetchAll()(这给了我我需要的),但我只是想找出最有效的方法做事。

最佳答案

$stmt->rowCount();

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

行必须被获取(缓冲到内存中,或迭代)才能工作。您的 pdo 驱动程序被配置为自动执行此操作并不少见。

关于php - 高效地从 Select 语句中获取行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8500020/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com