我需要帮助来获取具有相同 id 的两行中的一些行: 我知道这个的 SQL 代码是:
SELECT orderID,sum(itemPrice) as sum FROM orderitems GROUP BY orderID;
但是我不知道如何在 PHP 中实现这个。 这是我的代码:
<?php
require('database.php');
$query = 'SELECT * FROM `orderitems`';
$statement = $db->prepare($query);
$statement->execute();
$addresses = $statement->fetchAll();
$statement->closeCursor();
$order_id = filter_input(INPUT_POST, 'order_id');
$total='SELECT SUM(itemPrice)
FROM orderitems
group by orderID';
$statement = $db->prepare($total);
$statement->execute();
$total_order= $statement->fetchAll();
?>
<html>
<head>
<title>Total of the order</title>
<link rel="stylesheet" type="text/css" href="main.css" />
</head>
<body>
<h1>
Total for an order
</h1>
<h4>
<label>orderID : </label> <?php echo $order_id ;?>
</h4>
<p>The total for this order consisting of :</p>
<p><?php echo $total_order; ?>
</p>
</body>
</html>
但它没有显示结果而是写简单的ARRAY
我什至尝试过 var_dumb
但后来它显示如下:
array(3) { [0]=> array(2) { ["SUM(itemPrice)"]=> string(6) "399.00" [0]=> string(6) "399.00" } [1]=> array(2) { ["SUM(itemPrice)"]=> string(6) "699.00" [0]=> string(6) "699.00" } [2]=> array(2) { ["SUM(itemPrice)"]=> string(7) "1048.99" [0]=> string(7) "1048.99" } }
它显示了正确的答案,但我想摆脱其他的东西。
最佳答案
两个建议:
(1) 您的源代码表明您要选择特定的 orderId。因此,您的第二个准备好的 SQL 语句缺少实现此目的的 WHERE 子句。或者,第二个语句缺少 orderID
列,您可以使用该列从获取的结果中访问相应的行。
(2) 您获取结果的方式生成了一个数组,其中每个元素由第二条语句选择的行之一组成。您仍然需要选择目标行。选择该行后,您还必须访问相应的列。因此,为了便于讨论,假设“var-dump”示例中的第二行是所需的行。您可以像这样访问它:
<p><?php echo $total_order[1]['sum(itemPrice)']; ?>
关于php - 在 SQL 中获取具有相同 id 的行总和到 PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40190656/