在SQL中获取具有相同id的行的总和到PHP

时间:2016-10-22 09:47:07

标签: php mysql sql

我需要帮助才能获得具有相同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; }}

它显示了正确的答案,但我想摆脱其他事情。

2 个答案:

答案 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