php - MySQL 在 for(PHP) 循环中执行 INSERT。 INSERT 仅在第一个循环上运行

标签 php mysql phpexcel sql-insert

我有一个代码将 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/

相关文章:

php - 如何从 sql 查询中删除特殊字符?

mysql - MySQL 中为什么要在 ORDER 子句之后放置 LIMIT 子句?

php - 如何从 php 中的单个 excel 文件读取多个工作表?

php - 在 php/mysql 中显示 sql 查询进度

php - 如何在 PHP 中生成一个在手动重置之前有效的唯一 token ?

php - Zend_Form 和 Zend_Filter

PHPExcel : Parsing XLSX files with X namespace

php - Rack 的轻量级流式 HTTP 代理(Ruby CPU 轻型 HTTP 客户端库)

mysql - 数据库、JSON 和嵌入式数据库

php - 拉维Excel : how to get value of a cell?