我看到有关计算行的其他教程,但没有计算具体行$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);
}
答案 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循环