Nach String im MySQL-Tabellennamen suchen und ersetzen

qsrs

Erfahrenes Mitglied
Hallo,

ich habe eine MySQL-DB und möchte mittels PHP nach bestimmten Strings in Tabellennamen suchen und diese bei Übereinstimmung umbenennen. Beispiel:

Suche file_manager

Tabellen:

file_manager_users
file_manager_files
file_manager_groups

Ersetze mit datei_manager

Ergebnis:

datei_manager_users
datei_manager_files
datei_manager_groups

Geht so etwas und falls ja, würde ich mich über Hilfe sehr freuen.
 
Hi,

Du kannst mit SHOW TABLES LIKE alle passenden Tabellen auslesen und diese dann in einer Schleife durchlaufen, in der Du die mit RENAME tabelle TO tabelle_neu umbenennst.

LG
 
Hallo und vielen Dank. Ich komme gerade bis zur Abfrage, dann wird es problematisch. Das war mein Versuch, aber ich bekomme nur Array angezeigt, wenn ich erst einmal eine Ausgabe mittels echo versuche:

PHP:
  $sql0 = "SHOW TABLES LIKE \"%$set_dbtable_prefix_old$set_dbtable_sep_help%\""; 
  $query0 = mysql_query ($sql0, $dbconnect);
 
  for ($i1 = 0; $i1 < mysql_num_rows ($query0); $i1++) {
   $array0[$i1] = mysql_fetch_array ($query0);
   }
 
  for ($i1 = 0; $i1 < count ($array0); $i1++) {
   //Umbenennen
   }
 
Zuletzt bearbeitet:
Hi,

Du baust in Deiner Schleife ja auch ein Array aus Arrays auf. Du kannst mit einem RENAME-Statement mehrere Tabellen umbenennen, was heißt, dass Du in der Schleife nur die Abfrage zusammenbasteln musst.

Bau mal folgende Schleife ein und lass die Abfrage ausgeben:

PHP:
$renames = array();
while($row = mysql_fetch_array($result)) {
   $renames[] = "`$row[0]` to `" . str_replace($search, $replace, $row[0]) . "`";
}
$query = 'rename table ' . implode(',', $renames);

Musst natürlich noch die Variablen anpassen. Passt's dann?

LG
 
Zurück