connect_error) { die("❌ Ошибка подключения к БД: " . $db->connect_error); } $db->set_charset('utf8mb4'); echo "🔄 === ЗАМЕНА ПРОБЕЛОВ НА ПОДЧЁРКИВАНИЯ В БД ===\n\n"; // Находим все файлы с пробелами и проблемными символами в путях $query = " SELECT n.notesid, n.filename, sr.crmid as project_id FROM vtiger_notes n INNER JOIN vtiger_senotesrel sr ON n.notesid = sr.notesid WHERE n.filename LIKE '%/Documents/%_%/%' AND (n.filename LIKE '% %' OR n.filename LIKE '%\"%' OR n.filename LIKE '%,%' OR n.filename LIKE '% %') AND sr.crmid IN (SELECT projectid FROM vtiger_project) ORDER BY sr.crmid, n.notesid "; $result = $db->query($query); if (!$result) { die("❌ Ошибка запроса: " . $db->error); } $total = $result->num_rows; $updated = 0; $errors = 0; echo "📊 Найдено файлов с пробелами: {$total}\n\n"; while ($row = $result->fetch_assoc()) { $notesid = $row['notesid']; $oldPath = $row['filename']; // Заменяем пробелы и проблемные символы в пути $newPath = $oldPath; // Разделяем базовый путь и относительный путь $parts = explode('/Documents/', $newPath); if (count($parts) == 2) { $basePath = $parts[0] . '/Documents/'; $relativePath = $parts[1]; // Применяем ВСЕ замены к относительному пути: // 1. Заменяем кавычки на подчёркивания $relativePath = str_replace('"', '_', $relativePath); // 2. Заменяем запятые на подчёркивания $relativePath = str_replace(',', '_', $relativePath); // 3. Заменяем все пробелы (одинарные и множественные) на подчёркивания $relativePath = preg_replace('/\s+/', '_', $relativePath); $newPath = $basePath . $relativePath; } // Обновляем БД $stmt = $db->prepare("UPDATE vtiger_notes SET filename = ? WHERE notesid = ?"); $stmt->bind_param('si', $newPath, $notesid); if ($stmt->execute()) { $updated++; if ($updated % 100 == 0) { echo "✅ Обновлено: {$updated}/{$total}\n"; } } else { $errors++; echo "❌ Ошибка обновления {$notesid}: " . $stmt->error . "\n"; } $stmt->close(); } echo "\n📊 === ИТОГОВАЯ СТАТИСТИКА ===\n"; echo "✅ Обновлено: {$updated} записей\n"; echo "❌ Ошибок: {$errors} записей\n"; echo "\n✅ Обновление завершено!\n"; $db->close();