我意识到有很多帖子关于从选择中获取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); 才能使用循环后?这可以改进吗?
答案 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(*)
。如果查询使用索引,这没什么大不了的。