PHP / MYSQL插入数组Foreach循环

时间:2012-06-15 22:21:49

标签: php mysql arrays insert

这个让我非常慌张,所以我提前感谢你的帮助。似乎有很多关于这个主题的演练,但似乎我可能会给这只猫画上一些不同的东西。 。 。

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

我可以毫无问题地正确回应。但是,当我发布帖子时,我只发布上一个条目* [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);
  }

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

2 个答案:

答案 0 :(得分:3)

您的主要问题是,在循环外声明$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,...)

您已将SELECT替换为VALUES

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

答案 1 :(得分:2)

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);

  }