在PHP MYSQL中循环以将累积数据从一个表插入到新表

在PHP MYSQL中循环以将累积数据从一个表插入到新表,php,mysql,foreach,insert,Php,Mysql,Foreach,Insert,我有一张这样的桌子: id | order_id | code | 1 | 2200 | 489512444756 | 2 | 2200 | 489512444756 | 3 | 2200 | 489512444777 | 4 | 2200 | 489512444777 | 5 | 2200 | 489512444777 | 6 | 2201 | 489512444788 | 7 | 2201

我有一张这样的桌子:

id  | order_id | code         | 
1   | 2200     | 489512444756 |
2   | 2200     | 489512444756 |
3   | 2200     | 489512444777 |
4   | 2200     | 489512444777 |
5   | 2200     | 489512444777 |
6   | 2201     | 489512444788 |
7   | 2201     | 489512444788 |
8   | 2201     | 489512444777 |
id  | order_id  | code        | qty |
1   | 3         | 6           | 0   |
etc...
我尝试使用for循环在MySQL中用累积数据(聚合代码以提供数量)填充另一个表,其中包含以下列:

id  | order_id  | code        | qty |
用于执行此操作的PHP代码如下所示:

mysql_select_db($database, $server);
$query_Recordset1 = "SELECT `order_id` FROM stock GROUP BY order_id ";
$Recordset1 = mysql_query($query_Recordset1, $beharserver) or die(mysql_error());

while ($row_orders = mysql_fetch_assoc($Recordset1)){
  foreach ($row_orders as $ord) {
    $query_Recordset2 = "SELECT `order_id`, code, COUNT(id) AS qty FROM stock WHERE `order_id` = '".$ord."' GROUP BY code";
    $Recordset2 = mysql_query($query, $server) or die(mysql_error());
    $row_orders2 = mysql_fetch_assoc($Recordset2);

    foreach ($row_orders2  as $itm) {
      $insert_qty = "INSERT INTO orders_agg (order_id, code, qty) VALUES ( '".$itm[0]."','".$itm[1]."','".$itm[2]."' )";

      $qty = mysql_query($insert_qty, $server) or die(mysql_error());
    }
  } 
}
上面的代码运行不正常,新表中插入的数据与实际需要的数据不同

插入的数据如下所示:

id  | order_id | code         | 
1   | 2200     | 489512444756 |
2   | 2200     | 489512444756 |
3   | 2200     | 489512444777 |
4   | 2200     | 489512444777 |
5   | 2200     | 489512444777 |
6   | 2201     | 489512444788 |
7   | 2201     | 489512444788 |
8   | 2201     | 489512444777 |
id  | order_id  | code        | qty |
1   | 3         | 6           | 0   |
etc...

我猜问题在于代码没有将值插入到第二个表中


您需要按名称引用数组中的结果值,例如$itm['order_id']、$itm['qty']等。

您应该使用一条SQL语句来完成所有工作。它是:

INSERT INTO orders_agg 
(SELECT NULL, `order_id`, code, COUNT(*) AS qty FROM stock
      GROUP BY order_id, code)

您似乎忘记在问题中包含一个问题。很抱歉,Biffen,但我对编辑器和问题的格式不太熟悉。获取订单号时看起来是同一个问题--我认为应该是$ord['order\u id'],在将数组结果更改为“按名称”后,我收到此错误。警告:第49I行的…\db.php中为foreach()提供的参数无效,这意味着您正在构建SQL语句的$ord引用不在foreach循环中。我还尝试记录SQL语句,看看它们是否符合您的期望。