我正在检索tbl_orderdetail(表1)的最后一个id,以便将插件条目添加到tbl_orderdetail_addon(表2)中。基本上它应该根据(表1)收到的ID数插入(表2)。我正在使用mysql_insert_id()。
我做对了,但是ID并没有循环。它为(表2)中的所有条目插入相同的id(表1)。假设我在(表1)中有两个条目,显然它应该返回2个id。并且每个id有2个添加项目。因此(表2)应该有四个条目具有2个不同的id(表1)。在我的情况下,我得到4个相同id的条目(表1)
这是我的编码:
$o_id_detail=mysql_insert_id();//(table 1) id
foreach($addon_price as $a_p=>$p)//
{
echo $a_p;
foreach($p as $m)
{
$addon_id= $m['id'];
echo $m['addon_name'];
echo $m['deposit'];
echo $m['ppd'];
echo $m['pp_eight'];
echo $m['pp_six'];
$addon_total=$m['deposit']+$m['ppd']+$m['pp_eight']+$m['pp_six'];
echo $addon_total;
$addon_detail="INSERT INTO tbl_orderdetail_addon (OrderID,addOns_id,addOns_price) VALUES ('$o_id_detail','$addon_id','$addon_total')";
if(!empty($addon_id))
{
mysql_query($addon_detail)or die(mysql_error());
}
}
}
非常感谢任何帮助。谢谢。
答案 0 :(得分:1)
基本上它应该根据(表1)收到的ID数插入(表2)
mysql_insert_id()
仅返回一个int
值。正如described in the manual:
检索由AUTO_INCREMENT列生成的ID 以前的查询(通常是INSERT)。
你需要将第一行插入table1然后插入table2中的相应行;将第二行插入table1然后插入table2中的相应行;等
伪码来解释前一段:
foreach order_detail {
insert order_detail;
get last_insert_id;
foreach order_detail_addon {
insert order_detail_addon with last_insert_id;
}
}
已编辑添加:
您的代码容易受到SQL Injection的攻击。 Read this并查看PHP manual says about it。
你mysql_*
{{1}}函数。{/ p>