如何在函数内使用PDO计算特定行?

时间:2016-09-08 20:33:11

标签: php mysql pdo

我看到有关计算行的其他教程,但没有计算具体行$row[scope]的特定行。怎么办呢?

function counting(){
$query = "SELECT    * 
          FROM      table";

$result->fetchAll($sql, $params);   
$num_rows = count($result);

$counter = 0;

    //while($row = mysql_fetch_array($result)){ //old code
    foreach($result as $row){
        if($row[scope] == "all"){
            $counter++;
        }
    }
    $return = ($counter > 0)?TRUE:FALSE;
}

protected function fetchAll($sql, $params)
{
    $stmt = $this->dbh->prepare($sql);
    $stmt->execute($params);
    return $stmt->fetchALL(DatabaseAdapter::FETCH_ASSOC);
}

1 个答案:

答案 0 :(得分:2)

你需要两个功能。

而不是y ~ x1 + x2 + x3 | x1 + x2 + x3,您只需要一个通用函数来运行返回 PDOStatement 的查询,这是必不可少的。

fetchAll()

在大多数情况下,它的工作方式与fetchAll()函数完全相同,而代码没有任何更改,但是如果您明确需要从中获取数组,则可以随时附加一个fetchAll()调用它:

protected function sql($sql, $params)
{
    $stmt = $this->dbh->prepare($sql);
    $stmt->execute($params);
    return $stmt;
}

您需要的第二个功能是实际计数:

$result = $this->sql($sql, $params)->fetchAll();

使用这样的函数,您可以计算(或检测存在)任何范围。

请注意,由于返回的PDOStatement,我们可以获得另一种类型的结果 - 标量值而不是数组。

  

升级虽然循环有时会很痛苦....

你知道,当SQL和PDO 正确使用时,你几乎不需要一个while循环