簡體   English   中英

分組和計數 PDO output

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

可能最好在准備好的語句中使用它們。

https://www.php.net/manual/en/pdo.prepare.php

https://www.php.net/manual/en/pdo.prepared-statements.php

您可以使用條件計數和求和。 對於這個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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM