Mic*_*ICE 7 php zend-framework zend-db
鉴于下面的泛型选择,有没有办法从Zend Framework获取查询返回的记录数?循环中的$ row ++对于我的解决方案是不可接受的,因为我正在使用分页(尽管它不在我的示例中).
我也不想用"Count(*)"添加另一个查询.
$query = "Select * from Users where active = 1";
$stmt = $db->query($query);
$noOfRows = ???;
while ($row = $stmt->fetch())
{
// processing
}
Run Code Online (Sandbox Code Playgroud)
Jus*_*tin 13
它仍然需要另一个查询,但是MySQL有一个SELECT参数SQL_CALC_FOUND_ROWS- 它可以在您的连接中存储一个值SELECT FOUND_ROWS()
注意 - 初始查询的性能会下降,因为限制将在稍后处理,但可能比单独的COUNT()更快.
$query = "Select SQL_CALC_FOUND_ROWS * from Users where active = 1 limit 20";
$stmt = $db->query($query);
while ($row = $stmt->fetch())
{
// processing
}
$count = $db->fetchOne('SELECT FOUND_ROWS()');
Run Code Online (Sandbox Code Playgroud)
使用 fetchAll()
fetchAll 返回一个数组,因此您可以执行以下操作:
$rows = $db->fetchAll("select ...");
$numRows = sizeof($rows);
foreach ($rows as $row)
{
// process each row
}
Run Code Online (Sandbox Code Playgroud)