2013-04-19 67 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