PDO - 行数 - 这是最短的方式吗?

时间:2014-01-07 16:27:15

标签: php pdo mysqli

我意识到有很多帖子关于从选择中获取PDO中的行数...无聊!!

但是......我试图在尽可能少的行中完成它,然后仍然可以在循环中使用记录集。这是怎么回事?

$sql =  "SELECT Name FROM my_table WHERE LastName = 'Wilson' ";

$stmt = $conn->query($sql);
$stmt->setFetchMode(PDO::FETCH_ASSOC);
$row_count = count($stmt->fetchAll());
$stmt = $conn->query($sql);

foreach ($stmt as $row) {

    echo $row['Id'];

}

我尝试了很多组合......但我似乎必须加倍 $ stmt = $ conn->查询($ sql); 才能使用循环后?这可以改进吗?

3 个答案:

答案 0 :(得分:1)

说实话,我没有得到整个rowcount()的交易。

我有一个现场网站,如果我这样做:

$stmt = $pdo->query("SELECT type FROM vehicles WHERE del='N'");
echo $stmt->rowcount();

它返回46,这是正确的。

这在我的开发服务器和托管服务器上都能正常工作。

据我所知,如果你在查询中使用COUNT(),rowcount()只能起作用。毫无疑问,如果我错了,有人会纠正我。

答案 1 :(得分:0)

这样的事情

$sql =  "SELECT * FROM my_table ";

$stmt = $conn->query($sql);
$stmt->setFetchMode(PDO::FETCH_ASSOC);
$results = $stmt->fetchAll();
$row_count = count($results);

foreach ($results as $row) {

    echo $row['Id'];

}

答案 2 :(得分:0)

这里不多说。您可以获取结果数据,然后计算PHP中的行数,或者存储查询并运行两次 - 一次使用实际的SELECT,一次使用SELECT COUNT(*)。如果查询使用索引,这没什么大不了的。