PHP / MYSQL 插入数组 Foreach 循环
Posted
技术标签:
【中文标题】PHP / MYSQL 插入数组 Foreach 循环【英文标题】:PHP / MYSQL Insert Array Foreach Loop 【发布时间】:2012-06-19 00:12:32 【问题描述】:这件事让我非常不安,所以我提前感谢您的帮助。似乎有很多关于这个主题的演练,但似乎我可能会为这只猫剥皮有点不同。 . . .
我有一个采购订单表单,我正在使用 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);
我很确定上面有很多问题。 . .提前谢谢你。
【问题讨论】:
你为什么不从这里开始dev.mysql.com/doc/en 实际错误是什么? “我可以让它正确地回响......”:提到echo
在哪里?
【参考方案1】:
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);
【讨论】:
SQL 查询仍然不稳定。已在我的回答中修复。【参考方案2】:您的主要问题是,在循环外声明 $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
让我知道它是否有效,否则请告诉我它到底是什么错误。
【讨论】:
甜蜜!将查询放在循环中就可以了。不敢相信它是那么直截了当!我保持 sql 语法不变。 . .我更喜欢dev.mysql.com/doc/refman/5.1/en/insert-select.html 中概述的插入方法,似乎如果我的表发生变化,我不会把表格弄坏。谢谢! 哦,好吧,很有趣。很高兴你让它工作了。 (顺便问一下,你能接受答案吗?)以上是关于PHP / MYSQL 插入数组 Foreach 循环的主要内容,如果未能解决你的问题,请参考以下文章