无法循环访问mysql_insert_id()以获取多个条目

时间:2014-08-06 19:20:45

标签: php

我正在检索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());


                                 }
                    }     

        }

非常感谢任何帮助。谢谢。

1 个答案:

答案 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>