補充 INSERT 實務常見模式:批次插入效能、避免重複、獲取自增 ID、大量資料載入。
max_allowed_packet),避免過大封包。$pdo->beginTransaction();
$stmt = $pdo->prepare('INSERT INTO logs (msg) VALUES (?)');
foreach ($logs as $log) {
$stmt->execute([$log]);
if (++$i % 500 === 0) $pdo->commit() && $pdo->beginTransaction();
}
$pdo->commit();
LOAD DATA INFILE '/path/file.csv'
INTO TABLE users
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(name, email, created_at);
FILE 權限、local_infile=1。$pdo->prepare('INSERT INTO users (name) VALUES (?)')->execute(['Tom']);
$id = $pdo->lastInsertId(); // PDO
$mysqli->query("INSERT INTO users (name) VALUES ('Tom')");
$id = $mysqli->insert_id; // mysqli
UNIQUE KEY + INSERT IGNORE / ON DUPLICATE KEY UPDATE。SELECT 檢查 (有競態風險)、分散式鎖、冪等鍵 (如訂單號)。VALUES (Tom) → 應為 VALUES ('Tom')。