我很沮丧,我尝试了很多方法,但没有找到我预期的结果。我的表数据库中有这些数据:
| PartID | HasilProduksi |QtyProduksi|
|----------------------|------------------|-----------|
| BLAP-FG152-PF-KGX | Repair | 1 |
| AWDX-FG002-HN-KGX | Reject | 90 |
| HMXX-FG022-EG-KGX | Good | 100 |
| ECJX-FG018-AV-MCM | Good | 111 |
我想创建包含结果的报告:
| | ACTUAL |
| PartID | ---------------------|
| |Good | Repair | Reject|
|----------------------|-----|--------|-------|
| BLAP-FG152-PF-KGX | 0 | 1 | 0 |
| AWDX-FG002-HN-KGX | 0 | 0 | 90 |
| HMXX-FG022-EG-KGX | 100 | 0 | 0 |
| ECJX-FG018-AV-MCM | 111 | 0 | 0 |
我正在使用switch case方法,但结果与我的预期结果不同。这是我的代码:
$sqlc = "SELECT * FROM $db_dthp WHERE IdBukti='$id_bukti'";
$qc = mysqli_query($conn, $sqlc);
$c = 0; $good=0; $reject=0; $repair=0;
while ($rc = mysqli_fetch_assoc($qc)) {
switch ($rc['HasilProduksi']) {
case 'Good':
$good += (int) $rc['QtyProduksi'];
$datagood += (int) $rc['QtyProduksi'];
break;
case 'Reject':
$reject += (int) $rc['QtyProduksi'];
$datareject += (int) $rc['QtyProduksi'];
break;
case 'Repair':
$repair += (int) $rc['QtyProduksi'];
$datarepair += (int) $rc['QtyProduksi'];
break;
default:
break;
}
$c++;
}
$res['result'][$i]['data'][$b]['hp'][0]['good'] = number_format($good,0,'.','.');
$res['result'][$i]['data'][$b]['hp'][0]['reject'] = number_format($reject,0,'.','.');
$res['result'][$i]['data'][$b]['hp'][0]['repair'] = number_format($repair,0,'.','.');
你能帮帮我吗?
最佳答案
如果您使用此其他查询,您将已经拥有数据,并且不需要在 php.ini 中进行切换。您将在查询中执行此案例:
$sqlc="SELECT PartID,
CASE
WHEN HasilProduksi='Good' THEN QtyProduksi ELSE 0
END as Good,
CASE
WHEN HasilProduksi='Repair' THEN QtyProduksi ELSE 0
END as Repair,
CASE
WHEN HasilProduksi='Reject' THEN QtyProduksi ELSE 0
END as Reject
FROM $db_dthp WHERE IdBukti='$id_bukti';"
关于php - 切换大小写循环 PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45751870/