PHP / MYSQL Insert Array Foreach Loop


PHP / MYSQL Insert Array Foreach Loop

这个让我很慌乱,所以我提前感谢您的帮助。 关于这个话题似乎有很多演练,但似乎我可能给这只猫剥皮有点不同。

有一个采购订单表单,我正在使用 javascript 将行动态添加到表中并捕获多个行项目的数据。然后,我收集数组中每一列的数据。 例如,我将"Cust_PN","数量","价格"作为每个列和数组。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);
  }

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

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

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

foreach 必须在 $query 1 之前:

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