簡體   English   中英

計算並在PHP的不同列中顯示多個mysql行值

[英]Count and display multiple mysql row values in different columns for PHP echo

我已經使用以下mysql語句來計數和檢索mysql數據庫中的多個數據庫行:

SELECT COUNT(*) FROM leavesrecords WHERE leavetype IN ('Casual','Annual','Medical') and empno = '202'  GROUP BY leavetype

但是此查詢的輸出僅包含一列,列名稱為COUNT(*) 該查詢返回三個計數值,我希望這些值分配PHP變量。 以下我用來獲取值的PHP代碼:

include 'database.php';
$query = "SELECT COUNT(*) FROM leavesrecords WHERE leavetype IN ('Casual','Annual','Medical') and empno = '202'  GROUP BY leavetype; ";
$stmt = $con->prepare($query);
$stmt->execute();

$num = $stmt->rowCount();
if($num>0){
    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)){
        extract($row);
        echo $row["leavesrecords"];
    } 
}
else{ echo "";}
?>

但是這段代碼在沒有顯示單個值的情況下拋出了錯誤。 我想將這三個mysql計數分配給三個mysql變量。 我怎樣才能做到這一點?

您應該為thr列結果使用別名

 SELECT COUNT(*) as my_count 
 FROM leavesrecords 
 WHERE leavetype IN ('Casual','Annual','Medical') and empno = '202'  GROUP BY leavetype

並使用別名的密鑰引用該列

if($num>0){
    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)){
        // extract($row);
        echo $row["my_count"];
    } 
}

您不應使用表名而是使用正確的列名來引用行內容

考慮在查詢中使用IFCASE語句返回單行:

 SELECT sum(if(leavetype='Casual',1,0)) AS `CasualCount`,
    sum(if(leavetype='Annual',1,0)) AS `AnnualCount`,
    sum(if(leavetype='Medical',1,0)) as `MedicalCount`
FROM leaverecords
WHERE leavetype IN ('Casual','Annual','Medical') and empno = '202';

現在,您將有1行包含3個字段。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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