如何从数组中获取值来自db?

时间:2015-06-25 11:50:01

标签: php

我遇到了使用条件语句获得2个不同行数的问题。

$sql = select sum(id = :id AND category = :cat) as count1, 
              sum(category = :cat) as count2 
       from furniture;
$stmt = $connectdb->prepare($sql);
$stmt->execute(array(':id'=>$id, ':cat'=>"1"));
$resulta = $stmt->fetchAll(PDO::FETCH_ASSOC);

$rowCount1 = count(count1);
$rowCount2 = count(count2);

如何获取count1或count2的计数值?

3 个答案:

答案 0 :(得分:1)

您可以使用fetch代替fetchAll,因为您的结果只会包含1条记录:

$resulta = $stmt->fetch(PDO::FETCH_ASSOC);

要访问该记录,请执行以下操作:

$rowCount1 = $resulta['count1'];
$rowCount2 = $resulta['count2'];

除此之外,您需要在查询周围引用,并且您需要查询的where子句:

$sql = "select sum(id) as count1, sum(category) as count2 from furniture where id = :id AND category = :cat";

但是我怀疑这是否会产生预期的结果。

答案 1 :(得分:1)

我可能会这样做。顺便说一句,道具给你在SQL中的SUMming而不是在:)之后做一个可怕的循环。

$resulta = $resulta[0];

$rowCount1 = $resulta['count1'];
$rowCount2 = $resulta['count2'];

答案 2 :(得分:0)

->fetchall()方法返回结果行数组,因此您必须执行

$rowCount1 = $resulta[0]['count1'];
$rowCount2 = $resulta[0]['count2'];

或者,如果您知道只有一个结果行使用

$resulta = $stmt->fetch(PDO::FETCH_ASSOC);
$rowCount1 = $resulta['count1'];
$rowCount2 = $resulta['count2'];

就像一个问题,我不知道该查询正在做什么,或者即使它会起作用!