使用PHP-Mysqli无法在数据库中插入超过180条记录

时间:2017-12-20 15:00:04

标签: php database mysqli

我正在开展一个项目,要求我预测一段时间的材料使用情况并生成摘要。我能够生成预测,可以长达1200个。但是,为了生成摘要,记录需要存储在数据库中,可以将它们提取到汇总。问题是:当单击一个按钮生成摘要时,代码只能工作,当总行数<= 200.I检查了代码时,搜索StackOverflows,甚至更改max_allowed_pa​​cked = 999MB。但是它仍然没有插入到Database.See下面的代码,并且在我没有获得解决方案的情况下进行了搜索。 enter image description here 请参阅插入代码:

if(isset($_POST['exportBtn']) && isset($_POST['sflt'])){
        //$arr = array();
        foreach($_POST['sflt'] as $key => $value) {
         set_time_limit(0);
         $eflt = mysql_prep($_POST['sflt'][$key]);
         $emodel = mysql_prep($_POST['smodel'][$key]);
         $eengine = mysql_prep($_POST['sengine'][$key]);
         $eloc = mysql_prep($_POST['sloc'][$key]);
         $estye = mysql_prep($_POST['sstye'][$key]);
         $ensvr = mysql_prep($_POST['snsvr'][$key]);
         $eehd = mysql_prep($_POST['sehd'][$key]);
         $epname = mysql_prep($_POST['spname'][$key]);

         $inExp = mysqli_query($con,"INSERT  INTO tab_forecast(fltno,model,engine,loc,serviceType,nextSvr,usageHr,partName)VALUES ('$eflt','$emodel','$eengine','$eloc','$estye','$ensvr','$eehd','$epname')");
         }//End for-each loop

请注意,我还尝试创建单个insert语句而不是逐个插入,但结果仍然相同 - 不将所有记录插入数据库。我的数据库引擎设置为InnoDB,但结果相同。请问,我还能做什么,或者有更好的方法来解决这个问题。 注意,我有搜索SO,但没有解决方案满足我的需要,因此这个问题。

1 个答案:

答案 0 :(得分:0)

我编写的代码完美无缺,所有需要做的就是更改服务器上的某些参数。我在文件所在的目录中创建了一个新的ini文件。通常,这可以是.user.ini或php.ini文件。设置以下参数以覆盖默认设置:

memory_limit = 1G
max_execution_time = 300
max_input_time = 300
post_max_size = 1G
max_input_vars = 10000
file_uploads = -1
max_file_uploads = 35
upload_max_filesize = 1G

,  一旦完成。您可以通过在测试脚本中运行echo phpinfo()来确认更改来验证。一旦完成,我就可以插入超过500行。事实上,更改max_input_time = -1和max_input_vars = 50000,我能够插入超过1000条记录。

请注意,只要您拥有处理请求的资源,就可以在本地/实时服务器上完成此操作。我希望有一天能帮助别人。 谢谢大家。