PDO (PHP) を使用して単一の挿入ステートメントに複数の行を挿入すると、MYSQL の InnoDB データベースが AI ID を順次生成することを誰でも確認できますか?
私は、ユーザーが Excel ファイルの行によってデータベースに挿入される Excel ドキュメントをアップロードできるプロジェクトに取り組んでいます。これらのドキュメントは 1 行から最大 10,000 行まで可能です。速度を上げるために、1 つのクエリですべてではないにしても、これらをブロックに挿入できるようにしたいと考えています。
私が読んだことから、最後の挿入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);