【问题标题】:MySQL SUM to PHP While LoopMySQL SUM 到 PHP While 循环
【发布时间】:2015-01-27 11:22:39
【问题描述】:

我不知道如何将 Mysql SUM 的结果放入您的 while 循环 THEN 放入一个变量以在 HTML 表中显示。

首先,我将代码列表(即“1111”、“33311”、“43433”)传递给 HTML 表单 textarea,然后将这些代码内爆到名为 $in 的变量中。然后我将代码列表(由 $in 表示)传递给我的 SQL 查询。

Mysql 查询

SELECT tbl1.code, tbl1.name, tbl1.cost, tble.price, tbl1.vat, sum(tbl2.onhand) as onhand 
FROM tbl1 
INNER JOIN tbl2 ON tbl1.code=tbl2.code 
WHERE (tbl2.name='AC' OR tbl2.name='WH') 
AND tbl1.code IN ($in)

注意如果我这样做(不带 SUM 和括号),则查询有效,但它仍然显示 $stock 的空表格单元格:

  tbl1.vat, tbl2.onhand AS onhand

然后我尝试将 Mysql SUM 函数的值传递给变量,然后使用 php echo 在表中显示该值。

PHP

$result = $mysqli->query($sql);

if ($result = mysqli_query($mysqli, $sql)) {

    while($row = $result->fetch_array()) {
        $code = $row['code'];
        $name = $row['name'];
        $cost = $row['cost'];
        $price = $row['price'];
        $vat = $row['vat'];
        $stock = $row['onhand'];  **Result from the Mysql SUM**


...........}

HTML 表格

    echo "<td>" . $name . " </td>";
    echo "<td>" . $cost . " </td>";
    echo "<td>" . $price . " </td>";
    echo "<td>" . $vat . " </td>";
    echo "<td>" . $stock . " </td>";

Mysql 查询确实有效,因为我在 Mac Terminal Mysql 中对其进行了测试,但是当我尝试在 php 中复制它时,$stock 没有回显到表格单元格??

干杯

【问题讨论】:

  • 括号 ) 是错字吗? $stock = $row['onhand)'];
  • 是的,感谢您强调这一点
  • @Hexana 所以你的代码没有它仍然无法工作?
  • 没有。 $stock 的单元格是空的,但所有其余数据都显示正常,所以我认为这是我处理 $result 中总和的方式

标签: php html mysql


【解决方案1】:

我很确定您的 sql 中缺少 group by。也许将其更改为

SELECT tbl1.code, tbl1.name, tbl1.cost, tbl1.price, tbl1.vat, sum(tbl2.onhand) as onhand 
FROM tbl1 
INNER JOIN tbl2 ON tbl1.code=tbl2.code 
WHERE (tbl2.name='AC' OR tbl2.name='WH') AND tbl1.code IN ($in)
GROUP BY tbl1.code, tbl1.name, tbl1.cost, tbl1.price, tbl1.vat

可能会起作用。

还要注意我是如何将 tble.price 更改为 tbl1.price 的,因为它看起来像是一个错字

【讨论】:

  • 奥马尔,我终于成功了。我添加了 GROUP BY 然后做了
     var_dump($row)
    ,它返回了 mysql 中的现有值。现在 $stock 变量正在显示现有的 :) Omar 的好东西。一直缺少的是 GROUP BY。做得好,谢谢。
【解决方案2】:

只是想指出一个事实... 希望你知道 sum 是一个聚合函数......所以在没有 group by 子句的情况下使用它会导致它返回一个包含所有记录总和的单行

SELECT tbl1.code, tbl1.name, tbl1.cost, tbl1.price, tbl1.vat, sum(tbl2.onhand) as onhand 
FROM tbl1 
INNER JOIN tbl2 ON tbl1.code=tbl2.code 
WHERE (tbl2.name='AC' OR tbl2.name='WH') AND tbl1.code IN ($in)
GROUP BY tbl1.code, tbl1.name, tbl1.cost, tbl1.price, tbl1.vat

【讨论】:

    猜你喜欢
    • 2011-11-30
    • 1970-01-01
    • 2019-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 2016-11-27
    相关资源
    最近更新 更多