我需要帮助才能获得具有相同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] =&gt; array(2){[&#34; SUM(itemPrice)&#34;] =&gt; string(6)&#34; 399.00&#34; [0] =&GT; string(6)&#34; 399.00&#34; } [1] =&gt; array(2){[&#34; SUM(itemPrice)&#34;] =&gt; string(6)&#34; 699.00&#34; [0] =&GT; string(6)&#34; 699.00&#34; } [2] =&gt; array(2){[&#34; SUM(itemPrice)&#34;] =&gt;字符串(7)&#34; 1048.99&#34; [0] =&GT;字符串(7)&#34; 1048.99&#34; }}
它显示了正确的答案,但我想摆脱其他事情。
答案 0 :(得分:2)
两个建议:
(1)您的源代码表示您要选择特定的orderId。所以你的第二个准备好的SQL语句缺少可以实现的WHERE子句。或者,第二个语句缺少可用于从提取的结果访问相应行的列orderID
。
(2)获取结果的方式产生了一个数组,每个元素由第二个语句选择的行之一组成。您仍然必须选择目标行。选择该行后,您还必须访问相应的列。所以,为了论证,让我们说你的第二行&#34; var-dump&#34;例子是期望的。您可以这样访问它:
<p><?php echo $total_order[1]['sum(itemPrice)']; ?>
答案 1 :(得分:0)
您可以尝试使用简单的foreach
$total='SELECT SUM(itemPrice) as sum
FROM orderitems
group by orderID';
$statement = $db->prepare($total);
$statement->execute();
$total_order= $statement->fetchAll(PDO::FETCH_ASSOC);
foreach($total_order as $row) {
echo $row['sum'] . ' <br />';
}
在这个jut回显但你可以添加到div