使用php和mysql插入大量数据

时间:2017-07-08 04:16:30

标签: php mysql database

我的php项目中有两个表。第一个表的主键是另一个表的外键。我有一个表单,我可以选择开始日期,结束日期,开始时间,结束时间和金额字段。当用户点击提交按钮时,我将从开始日期循环到结束日期,并且对于每个日期,循环应该从开始时间到结束时间与1小时差异。开始日期可以是1个月,1年或更长。现在,如果我选择1个月的开始日期和结束日期限制,我在插入记录时没有任何问题。但是,如果我选择3个月的日期,那么在第一张表中插入记录需要花费太多时间。从第一个表插入id我将在该日期的开始时间和结束时间之间循环,差异为1小时,并在第二个表中插入记录。现在用于在表格中插入数据我正在使用以下代码。

 if(!empty($datetimerangearr)){
    foreach($datetimerangearr as $datetime){
        $dateexplod = explode(" ",$datetime);
        $placedate = $dateexplod[0];
        $placetime = $dateexplod[1];
        $bookedplaceid = $opobj->getvalue("tbl_place","place_id","item_id = :item_id AND date = :date AND time = :time",array("item_id" => $productid, "date" => $placedate, "time" => $placetime));
        if($bookedplaceid == ""){
            $selplaceid = $opobj->insert("tbl_place","item_id,maxplace,place,date,time,status",":item_id,:maxplace,:place,:date,:time,:status",array("item_id" => $productid, "maxplace" => $maxplacepertour, "place" => $maxplacepertour, "date" => $placedate, "time" => $placetime, "status" => "1"));
            if(!empty($_REQUEST["checkedprice_id"])){
                $insrtflg = 0;
                foreach($_REQUEST["checkedprice_id"] as $k => $priceid){
                    if(isset($_REQUEST["showfirst"][$k][0]) && $_REQUEST["showfirst"][$k][0] != ""){
                        $showfirstopts = 1;
                    }else{
                        $showfirstopts = 0;
                    }
                    $opobj->insert("tbl_placeprice","place_id,price_id,showfirst",":place_id,:price_id,:showfirst",array("place_id" => $selplaceid, "price_id" => $priceid, "showfirst" => $showfirstopts));
                    $insrtflg = 1;
                }
            }
        }else{
            $placebookdflg = "1";
        }
    }
}

$datetimerangearr是一个包含从开始日期到结束日期的所有日期的数组。如果我选择3个月间隔的开始日期和结束日期,那么插入记录需要15分钟或更长时间。

任何帮助将不胜感激。在此先感谢。

0 个答案:

没有答案