2013-04-19 36 views
0

我取出由一个PDO这样的查询所有的结果过滤掉:用PHP从数组包含PDO/SQL获取结果

$orders = $ordersQuery->fetchAll(PDO::FETCH_ASSOC); 

现在,我想看看有多少行存在该场'status'等于'OPEN'。我知道我可以只建立我的SQL直接加载只打开状态行,但我认为它可能使用PHP的东西,如

$openOrders = count(array_keys($orders,"OPEN")); 

它虽然返回0更快。

+1

应该返回一个多维数组,你尝试循环结果呢?或者使用'vardump();'查看'$ orders'的样子。 –

+1

1-你怎么知道有超过0行? 2-你确定你不需要array_values吗? – Sebas

+0

不知道'$ orders'是怎么样的,我们无法帮到你。 – HamZa

回答

1

为了记录在案,这里就是我会做它在PHP:

$orders = $ordersQuery->fetchAll(PDO::FETCH_ASSOC); 
$open = array_reduce($orders, function ($num, array $order) { 
    return $num + (int)($order['status'] == 'OPEN'); 
}, 0); 

而且这里是如何真正做到这一点:

$query = "SELECT COUNT(*) FROM orders WHERE status = 'OPEN'"; 
+0

我试图在db上运行第二个查询。什么更有效率? – samyb8

+0

我不知道。这取决于。尝试两种并且基准它。 – deceze

+0

我不断收到此代码的错误...“语法错误,意外的T_FUNCTION” – samyb8