PHP/MYSQL插入数组Foreach循环

PHP/MYSQL插入数组Foreach循环,php,mysql,arrays,insert,Php,Mysql,Arrays,Insert,这件事让我非常紧张,所以我提前感谢你的帮助。关于这个主题似乎有很多演练,但我可能会给这只猫剥皮,这有点不同 我有一个采购订单表单,我正在使用javascript向表中动态添加行,并捕获多行项目的数据。然后我为数组中的每一列收集数据。例如,我将“Cust_PN”、“Qty”、“Price”列和数组作为每个。行项目1-3的客户编号[0]客户编号[1]和客户编号[2]。然后我有数量[0]、数量[1]和数量[2]等等 我可以让它正确地回显,没有问题。然而,当我转到post时,我只是根据上面的示例发布最后

这件事让我非常紧张,所以我提前感谢你的帮助。关于这个主题似乎有很多演练,但我可能会给这只猫剥皮,这有点不同

我有一个采购订单表单,我正在使用javascript向表中动态添加行,并捕获多行项目的数据。然后我为数组中的每一列收集数据。例如,我将“Cust_PN”、“Qty”、“Price”列和数组作为每个。行项目1-3的客户编号[0]客户编号[1]和客户编号[2]。然后我有数量[0]、数量[1]和数量[2]等等

我可以让它正确地回显,没有问题。然而,当我转到post时,我只是根据上面的示例发布最后一个条目*[3]中的数组数据

我目前有以下代码/查询。再次感谢您的帮助

$query1 = "INSERT INTO SO_Items (Timestamp,SO_Num,SO_Rev,SO_Line_Item,Cust_PN,Cust_PN_Rev,My_PN,My_PN_Rev,Description,
  Qty,Sale_Price,UOM,Program,Required_Date) 
  SELECT NOW(),'$SO_Num','$SO_Rev','$SO_Line_Item[$a]','$Cust_PN[$a]','$Cust_PN_Rev[$a]','$My_PN[$a]','$My_PN_Rev[$a]','$Description[$a]','$Qty[$a]','$Sale_Price[$a]','$UOM[$a]','$Program[$a]','$Required_Date[$a]'" or die ('Error posting data');



foreach($Cust_PN as $a => $b) {
  mysql_query($query1);
  }

我很确定上面有很多问题。提前感谢。

foreach必须在$query1之前:

foreach($Cust_PN as $a => $b) {

    $query1 = "INSERT INTO SO_Items (Timestamp,SO_Num,SO_Rev,SO_Line_Item,Cust_PN,Cust_PN_Rev,My_PN,My_PN_Rev,Description,
    Qty,Sale_Price,UOM,Program,Required_Date) 
    VALUES(NOW(),'$SO_Num','$SO_Rev','$SO_Line_Item[$a]','$Cust_PN[$a]','$Cust_PN_Rev[$a]','$My_PN[$a]','$My_PN_Rev[$a]','$Description[$a]','$Qty[$a]','$Sale_Price[$a]','$UOM[$a]','$Program[$a]','$Required_Date[$a]')" or die ('Error posting data');

    mysql_query($query1);

  }

foreach必须在$query1之前:

foreach($Cust_PN as $a => $b) {

    $query1 = "INSERT INTO SO_Items (Timestamp,SO_Num,SO_Rev,SO_Line_Item,Cust_PN,Cust_PN_Rev,My_PN,My_PN_Rev,Description,
    Qty,Sale_Price,UOM,Program,Required_Date) 
    VALUES(NOW(),'$SO_Num','$SO_Rev','$SO_Line_Item[$a]','$Cust_PN[$a]','$Cust_PN_Rev[$a]','$My_PN[$a]','$My_PN_Rev[$a]','$Description[$a]','$Qty[$a]','$Sale_Price[$a]','$UOM[$a]','$Program[$a]','$Required_Date[$a]')" or die ('Error posting data');

    mysql_query($query1);

  }

您的主要问题是,在循环之外声明
$query
。 它使它成为一个常量,并且也接受当时未定义的值
$a
$b
,因此导致SQL语法无效

foreach($Cust_PN as $a => $b) {
   $query1 = "INSERT INTO SO_Items (Timestamp, SO_Num, SO_Rev, SO_Line_Item, Cust_PN, Cust_PN_Rev, My_PN, My_PN_Rev, Description, Qty, Sale_Price, UOM, Program, Required_Date) VALUES (NOW(), '$SO_Num', '$SO_Rev', '$SO_Line_Item[$a]', '$Cust_PN[$a]', '$Cust_PN_Rev[$a]', '$My_PN[$a]', '$My_PN_Rev[$a]', '$Description[$a]', '$Qty[$a]', '$Sale_Price[$a]', '$UOM[$a]', '$Program[$a]', '$Required_Date[$a]');";

   $q = mysql_query($query1) or die ('Error posting data');

 }
试试看。 也修复了SQL查询。正确的语法是

INSERT INTO table_name (column1, column2, column3,...)
VALUES (value1, value2, value3,...)
您已将
选择
替换为


让我知道它是否有效,否则请告诉我它到底是什么错误。

您的主要问题是,在循环外声明
$query
。 它使它成为一个常量,并且也接受当时未定义的值
$a
$b
,因此导致SQL语法无效

foreach($Cust_PN as $a => $b) {
   $query1 = "INSERT INTO SO_Items (Timestamp, SO_Num, SO_Rev, SO_Line_Item, Cust_PN, Cust_PN_Rev, My_PN, My_PN_Rev, Description, Qty, Sale_Price, UOM, Program, Required_Date) VALUES (NOW(), '$SO_Num', '$SO_Rev', '$SO_Line_Item[$a]', '$Cust_PN[$a]', '$Cust_PN_Rev[$a]', '$My_PN[$a]', '$My_PN_Rev[$a]', '$Description[$a]', '$Qty[$a]', '$Sale_Price[$a]', '$UOM[$a]', '$Program[$a]', '$Required_Date[$a]');";

   $q = mysql_query($query1) or die ('Error posting data');

 }
试试看。 也修复了SQL查询。正确的语法是

INSERT INTO table_name (column1, column2, column3,...)
VALUES (value1, value2, value3,...)
您已将
选择
替换为


让我知道它是否有效,否则请告诉我它到底是什么错误。

为什么不从这里开始?实际错误是什么?“我可以让它正确地回显…”:提到的回显在哪里?为什么不从这里开始?实际的错误是什么?“我可以让它正确地回显…”:提到的
echo
?SQL查询仍然不稳定。我的答案中已修复。SQL查询仍然不稳定。固定在我的回答中。甜蜜!将查询放入循环中就成功了。真不敢相信是这么直截了当!我没有改变sql语法。我更喜欢在中概述的insert方法,似乎如果我的表发生变化,我就不会将表单从大门中分离出来。非常感谢。哦,好的,很有趣。很高兴你当时能成功。(顺便问一下,你能接受答案吗?)太好了!将查询放入循环中就成功了。真不敢相信是这么直截了当!我没有改变sql语法。我更喜欢在中概述的insert方法,似乎如果我的表发生变化,我就不会将表单从大门中分离出来。非常感谢。哦,好的,很有趣。很高兴你当时能成功。(顺便问一下,你能接受这个答案吗?)