谁能确认 MYSQL 中的 InnoDB 数据库在使用 PDO(PHP)在单个插入语句中插入多行时会按顺序生成 AI ID?
我正在开发一个项目,用户可以上传一个 excel 文档,该文档通过 excel 文件中的行插入到数据库中。这些文档可以是一行到 ~10,000 个。为了速度,我希望能够将它们插入块中,如果不是全部在一个查询中。
从我读过的内容来看,使用最后一个插入 id 减去插入次数来获取插入的 id 块似乎是安全的。
有没有人有过这不是 100% 安全的经验,或者关于这个主题的任何信息。
如果它有帮助,我将大致如何插入它(我会以 500 个为一组)
简化插入示例:
for ($i=0; $i < count($rowData['Name']); $i++) {
$insetPlaceHolders[":name$i"]=$rowData['Name'][$i];
$insetPlaceHolders[":email$i"]=$rowData['Email'][$i];
$insetPlaceHolders[":password$i"]=$rowData['Password'][$i];
$insetPlaceHolders[":employeeId$i"]=$rowData['EmployeeId'][$i];
$insetPlaceHolders[":startDate$i"]=$formData['StartDate'][$i];
$appendQuery[]="(:name$i,:email$i,:password$i,:employeeId$i,:startDate$i, {$_SESSION['companyId']})";
}
$appendQuery=implode(',',$appendQuery);
$sth = $this->dbh->prepare("INSERT INTO employees (name, email, password, custom_id, hire_date, company_id) VALUES $appendQuery");
$sth->execute($insetPlaceHolders);