如何计算Zend Framework 2中的行数

use*_*592 2 php zend-framework2

我需要计算MySql查询的结果行.这里我把TableGateway课程扩展到我的班级这是我的代码.

public function get_num_of_rows(){
    $sql = 'SELECT count(q_no) FROM questions';

    //code ????????????????
    $result = $this->select();

    return $result;
}
Run Code Online (Sandbox Code Playgroud)

那我怎么执行SELECT count(q_no) FROM questions

vim*_*083 10

如果您的表有大量记录,如果您使用,可能会出现内存错误

$result->count(); 
Run Code Online (Sandbox Code Playgroud)

相反,使用它,你可以避免相同

$select->from('TABLE_NAME')->columns(array('COUNT'=>new \Zend\Db\Sql\Expression('COUNT(*)')));
Run Code Online (Sandbox Code Playgroud)


Ser*_*nov 5

没有必要编写自己的SQL查询.当您执行$ this-> select()时,您将获得Zend\Db\ResultSet\ResultSet的实例.ResultSet有方法计数.

$result = $this->select();
return $result->count(); 
Run Code Online (Sandbox Code Playgroud)

但是不要忘记添加'options' => array('buffer_results' => true)到数据库适配器.

更新:

这是我曾经写过的最愚蠢的事情.始终从资源返回仅需要数据.在这里你只需要1个标量.所以/sf/answers/966712281/是正确的.

  • 永远不要选择所有行,然后计算它们,如果你需要特定查询将匹配的行数,而不是自己行. (10认同)