使用Php Mysql将多个记录插入数据库

时间:2017-12-07 08:56:49

标签: php mysqli

我正在运行预测。此预测已成功实施,我希望根据预测运行摘要报告。为实现这一目标,我必须允许用户点击按钮"摘要报告"。单击按钮后,它会将记录插入数据库,并根据需要立即获取并分析数据到摘要中。现在的问题是该记录很像1200条记录。此记录未插入到DB中,可能是因为它太多了。但是当我减少预测的时间段以使记录像100时,它将插入数据并根据需要进行分析。我应该怎么做才能将5000插入数据库的记录。或者有更好的方法来实现多次插入数据库? 请参阅下面的插入代码:

if(isset($_POST['exportBtn'])){
        foreach($_POST['sj'] as $key => $value) {
         $eflt = $_POST['sflt'][$key];
         $emodel = $_POST['smodel'][$key];
         $eengine =$_POST['sengine'][$key];
         $eloc = $_POST['sloc'][$key];
         $estye = $_POST['sstye'][$key];
         $ensvr = $_POST['snsvr'][$key];
         $eehd = $_POST['sehd'][$key];
              $inExp = mysqli_query($link,"INSERT INTO table_name(fltno,model,engine,loc,serviceType,nextSvr,usageHr)VALUES('$eflt','$emodel','$eengine','$eloc','$estye','$ensvr','$eehd')");
        }//End for-each loop

3 个答案:

答案 0 :(得分:0)

     $arr = array();
    foreach($_POST['sj'] as $key => $value) {
         $eflt = $_POST['sflt'][$key];
         $emodel = $_POST['smodel'][$key];
         $eengine =$_POST['sengine'][$key];
         $eloc = $_POST['sloc'][$key];
         $estye = $_POST['sstye'][$key];
         $ensvr = $_POST['snsvr'][$key];
         $eehd = $_POST['sehd'][$key];
         array_push($arr,"('$eflt','$emodel','$eengine','$eloc','$estye','$ensvr','$eehd')");
}
$inExp = mysqli_query($link,"INSERT INTO table_name(fltno,model,engine,loc,serviceType,nextSvr,usageHr) VALUES ".implode(',',$arr));

使用一个查询执行此操作。您也可以轻松地使用准备好的陈述来做这件事。

答案 1 :(得分:0)

首先将您的数据库引擎更改为" InnoDB"如果它不同,因为它提供了行级锁定,可以更快地改善数据操作。

其次,不是逐行插入MySQL表,而是准备包含所有行的字符串并将其插入一次,因为在MySQL中组装一个多行的INSERT语句比每行一个INSERT语句快得多。

EX。

$arrData = array(); 
foreach( $result as $row ) {
    $arrData[] = '("'.mysql_real_escape_string($row['text']).'", '.$row['id'].')';
}
mysql_query('INSERT INTO table (text, id) VALUES '.implode(',', $arrData));

以上查询将一次性插入所有数据。如果必须插入数千个数据,也可以划分$ arrData变量。就我而言,我已经成功插入了具有10列数据的4200个数据。

答案 2 :(得分:0)

  $data = [];
    $allData = [];
    if(isset($_POST['exportBtn'])){
        foreach($_POST['sj'] as $key => $value) {
            $data[] = isset($_POST['sflt'][$key])?$_POST['sflt'][$key]:'';
            $data[] = isset($_POST['smodel'][$key])?$_POST['smodel'][$key]:'';
            $data[] = isset($_POST['sengine'][$key])?$_POST['sengine'][$key]:'';
            $data[] = isset($_POST['sloc'][$key])?$_POST['sloc'][$key]:'';
            $data[] = isset($_POST['sstye'][$key])?$_POST['sstye'][$key]:'';
            $data[] = isset($_POST['snsvr'][$key])?$_POST['snsvr'][$key]:'';
            $data[] = isset($_POST['sehd'][$key])?$_POST['sehd'][$key]:'';
            $allData []= '('.implode(',', $data).')';
       }
        mysql_query('INSERT INTO table_name (fltno,model,engine,loc,serviceType,nextSvr,usageHr) VALUES '.implode(',', $allData));
}