[英]PHP Mysql update multiple columns with multiple row values by single query
[英]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"];
}
}
您不應使用表名而是使用正確的列名來引用行內容
考慮在查詢中使用IF
或CASE
語句返回單行:
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.