PHP 批量插入数据操作示例(防重复)
function batchInsertIgnoreDuplicates($mysqli, $tableName, $data) { if (empty($data)) { echo "No data to insert.\n"; return false; } $fields = array_keys($data[0]); $fieldList = implode(',', $fields); $values = []; foreach ($data as $row) { $escapedValues = array_map(function ($val) use ($mysqli) { return "'" . $mysqli->real_escape_string($val) . "'"; }, $row); $values[] = '(' . implode(',', $escapedValues) . ')'; } // 改用 INSERT IGNORE 跳过重复记录 $sql = "INSERT IGNORE INTO $tableName ($fieldList) VALUES " . implode(',', $values); $result = $mysqli->query($sql); if ($result) { $affected = $mysqli->affected_rows; echo "✅ Inserted $affected new rows into `$tableName` (duplicates ignored).\n"; return true; } else { echo "❌ Insert failed: " . $mysqli->error . "\n"; return false; } }
你必须确认你的表里已经建立了唯一索引,例如:
ALTER TABLE forecast_table ADD UNIQUE KEY unique_forecast (master_id, lottery_date_id, digit_place);