我正在制作一個電子商務網站。我必須在哪里顯示購物車中所有產品的總量。但是當我嘗試獲取所有產品的總量時,它只顯示最后一個產品的價格這是代碼$result = $query->fetchAll(PDO::FETCH_ASSOC);$total = 0; if($result > 0){ foreach($result as $row){ $price = $row['price']; $total += intval($price); }因為價格在數據庫中是 varchar,所以我使用 intval() 方法轉換為 int 并 echo $total <td class="pro-subtotal"><span><?php echo $total; ?></span></td>但它顯示列表中最后一行的數量
2 回答

神不在的星期二
TA貢獻1963條經驗 獲得超6個贊
您不需要此代碼。首先你不需要if($result > 0)。你的變量$result是一個數組,而不是一個數字,所以你不能將它與一個數字進行比較。intval如果您在算術上下文中使用結果,則意義不大。將一個變量分配給另一個變量而不對它做任何有用的事情是沒有意義的,所以$price = $row['price'];也要刪除。
然后剩下的是一個帶有算術加法的簡單循環。
$result = $query->fetchAll(PDO::FETCH_ASSOC);
$total = 0;
foreach($result as $row){
$total += $row['price'];
}
這不是最明智的想法,因為此類操作應該在 SQL 而不是 PHP 中完成。有什么理由必須用 PHP 來做嗎?如果不是,則簡單地聚合 SQL 中的值。
SELECT SUM(price) AS total FROM salesOrders WHERE saleId = ?
然后在 PDO 中只獲取一個列。
$total = $query->fetchColumn();
- 2 回答
- 0 關注
- 168 瀏覽
添加回答
舉報
0/150
提交
取消