我正在运行预测。此预测已成功实施,我希望根据预测运行摘要报告。为实现这一目标,我必须允许用户点击按钮"摘要报告"。单击按钮后,它会将记录插入数据库,并根据需要立即获取并分析数据到摘要中。现在的问题是该记录很像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
答案 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));
}