PHP 批量插入数据操作示例(防重复)

发布时间:2025-06-17 11:36:11    发布者:文昌文城莱奥网络技术工作室    浏览次数:8

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);