我有一个代码将 xlsx 上传到 Mysql 表,并且加载是通过 block 完成的,因为文件太大,所以我必须插入每个 block 。 for 循环工作良好,已经使用 echo 语句进行了测试,但 INSERT 仅在第一个 block 中完成。知道如何解决这个问题吗?这是代码的一部分:
for ($startRow = 2; $startRow <= $totalRows; $startRow += $chunkSize) {
$chunkFilter->setRows($startRow,$chunkSize);
//Load of the data
$objPHPExcel = $objReader->load($newFilePath);
$objWorksheet4 = $objPHPExcel -> getSheetByName("MIFReportExport");
//Getting data of every cell
$highestRow4 = $objWorksheet4->getHighestRow();
$highestColumn4 = $objWorksheet4->getHighestColumn();
$highestColumnIndex4 = PHPExcel_Cell::columnIndexFromString($highestColumn4);
$rows = array();
for ($row = 2; $row <= $highestRow4; ++$row) {
for ($col = 0; $col <= $highestColumnIndex4; ++$col) {
$rows[$col] = $objWorksheet4->getCellByColumnAndRow($col, $row)->getCalculatedValue();
}
$result = mysql_query("INSERT INTO fy16 (SerialNumber, BrandedModelName, GenericProductCode, Familia, ProductLineModelFile)VALUES ('".$rows[0]."', '".$rows[1]."', '".$rows[2]."', '".$rows[3]."', '".$rows[4]."', '".$rows[5]."')",$con) or die(mysql_error());
}
}
提前致谢。
最佳答案
首先,您应该看一下 PDO 和准备好的语句。 以下是如何创建 MASS 插入查询
$valuesToInsert = [
["firstColumn" => "item1", "secondColumn" => "item1"],
["firstColumn" => "item2", "secondColumn" => "item2"],
["firstColumn" => "item3", "secondColumn" => "item3"],
];
$valuesTab = array_map(function ($tab) { return "({$tab['firstColumn']}, {$tab['secondColumn']})"; },$valuesToInsert);
$query = "INSERT INTO `tableName` (firstColumn, secondColumn) VALUES ". implode(',', $valuesTab);
输出:
INSERT INTO
`tableName` (firstColumn, secondColumn)
VALUES
(item1, item1),(item2, item2),(item3, item3)
关于php - MySQL 在 for(PHP) 循环中执行 INSERT。 INSERT 仅在第一个循环上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42024215/