Php 如何从我从db获得的数组中获取值?

Php 如何从我从db获得的数组中获取值?,php,Php,我在使用条件语句获取两个不同的行计数时遇到问题 $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")); $r

我在使用条件语句获取两个不同的行计数时遇到问题

$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的计数值?

您可以使用
fetch
而不是
fetchAll
,因为您的结果将只包含一条记录:

$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";
但是,我怀疑这是否会产生期望的结果。

方法
->fetchall()
返回一个结果行数组,因此您必须执行以下操作

$rowCount1 = $resulta[0]['count1'];
$rowCount2 = $resulta[0]['count2'];
或者,当您知道将只使用一个结果行时

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

作为一个adendum,我不知道这个查询在做什么,甚至不知道它是否有效

我可能会这样做。顺便说一句,在SQL中求和并没有在之后执行可怕的循环,这是对您的支持:)


我喜欢第二个:)别忘了$rowCount2(注意;)<代码>$rowCount2是的,修复了它。复制/粘贴。。。除非我弄错了,否则这个解决方案将把
$rowCount1
$rowCount2
都保留为1,因为
$resulta['count1']
$resulta['count2']
的长度都是1?因此,我敢打赌,在这里您可以不用使用
count()
。谢谢。看起来不错。我最初的查询是
“从家具中选择cutID,其中cutID=:custID和category=:cat”我将其更改为上面的值,因为我需要从中获取两个计数值。在我上面的查询中,我省略了
WHERE cutID=:custID和category=:cat
这会改变输出吗?@d0ug7a5 True删除了计数。@Bekki-WHERE
子句可以是任何你想要的,这不应该影响SQLs返回和值的能力-它将查看
cutID
category
,只是不归还它们:)
$resulta = $resulta[0];

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