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'];