[英]Group and count PDO output
我有一個查詢:
$myData = $db->query("
SELECT *
FROM t1
WHERE event = '$eid'
", PDO::FETCH_OBJ);
以數組形式返回結果:
Array (
[0] => stdClass Object
(
[id] => 1
[even] => 1
[response] => NO
[adult] =>
[child] =>
)
[1] => stdClass Object
(
[id] => 2
[event] => 1
[response] => YES
[adult] => 1
[child] => 3
)
)
我需要得到以下計數:
每個回答的總數:是和否 如果是:成人總數 兒童總數
我可以從查詢中獲取它還是需要操縱數組來獲取計數?
您可以從當前查詢中迭代結果數組,也可以從另一個查詢中獲取計數。
-- display count of YES responses and total adults and children
SELECT COUNT(*), SUM(adult), SUM(child)
FROM t1
WHERE event = '$eid'
AND response = 'YES';
-- display count of NO responses
SELECT COUNT(*)
FROM t1
WHERE event = '$eid'
AND response = 'NO';
可能最好在准備好的語句中使用它們。
您可以使用條件計數和求和。 對於這個CASE
陳述是非常好的。
SELECT
COUNT(CASE response WHEN 'YES' THEN 1 ELSE NULL END) as YesResponses,
COUNT(CASE response WHEN 'NO' THEN 1 ELSE NULL END) as NoResponses,
SUM(CASE response WHEN 'YES' THEN adult ELSE 0 END) as Adults,
SUM(CASE response WHEN 'YES' THEN child ELSE 0 END) as Children
FROM t1
但是,請注意您的代碼容易受到 SQL 注入的影響。 您需要使用參數化准備好的語句。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.