Skip to content
  1. Готовые решения
  2. Полезные скрипты
  3. Изменение префикса у таблиц БД

Изменение префикса у таблиц БД

Информация

Для запуска кода используем дополнение console или modalConsole

Скрипт переименования префикса таблиц у modx

php
<?php
ini_set("max_execution_time", 0);
ignore_user_abort(true);
$current_prefix = $modx->config['table_prefix'];
function randPrefix($size) {
  $chars = "qazxswedcvfrtgbnhyujmkiolp1234567890QAZXSWEDCVFRTGBNHYUJMKIOLP";
  $out_prefix = null;
  while($size--) $out_prefix .= $chars[rand(0, StrLen($chars) - 1)];
  return $out_prefix;
}

// $new_prefix = 'newmodxprefix_'; // Задаём свой префикс
$new_prefix = randPrefix(12) . '_';  // или используем рандомно сгенерированный

$stmt = $modx->query("SHOW TABLES");
$tables = $stmt->fetchAll(PDO::FETCH_NUM);
$stmt->closeCursor();
foreach ($tables as $table) {
  $table = reset($table);
  $preg = "/^{$current_prefix}/u";

  if (preg_match($preg, $table)) {
    $new_table_name = preg_replace($preg, $new_prefix, $table);
    $sql = "RENAME TABLE `{$table}` TO `{$new_table_name}`";
    if ($s = $modx->prepare($sql)) {
      $s->execute();
    }
  }
}
echo "\nПрефикс обновлен! Новый префикс для таблиц: " . $new_prefix;