Umlaute in einer Datenbank ändern

Hier ist ein kleines Skript um Umlaute in einer MySQL Datenbank anzupassen falls diese nicht mehr stimmen (ä statt ä etc.)

Das Original findet ihr hier – ich habe das Skript erfolgreich getestet. Zugangsdaten müssen logischerweise angepasst werden.

<?php
/**
* Alle kaputten Umlaute reparieren bei Umstellung von ISO->UTF8
*
* @project        -
* @author        Boris Bojic <bojic@devshack.biz>
* @copyright    Copyright (c) 2011, Boris Bojic (DevShack)
* @version        Fri, 23 Dec 2011 13:47:11 +0100
* @updated        -
*
*/

// === [ Content / Charset ] ==============================================
header('Content-Type: text/html; charset=utf-8');

// PHP auch explizit auf UTF-8 setzen
mb_internal_encoding('UTF-8');

$db = array();

$db['host']        = "localhost";
$db['uname']    = "mysql_user";
$db['password']    = "mysql_pass";
$db['database']    = "datenbankname";

$dbconnect = mysql_connect($db['host'], $db['uname'], $db['password']) or die ("Konnte keine Verbindung zur Datenbank aufnehmen!");
mysql_select_db($db['database'],$dbconnect) or die ("Fehler beim Auswählen der Datenbank!");

mysql_set_charset('utf8');

echo '<pre>';

function getTables($db){

$result = mysql_query("SHOW TABLES FROM " . $db['database']);

while($row = mysql_fetch_row($result)){
$res[] = $row[0];
}

return $res;

}

function getColumns($table){

$table = mysql_real_escape_string($table);

$mysqlres = mysql_query("SHOW COLUMNS FROM " . $table);
while($row = mysql_fetch_row($mysqlres)){
$res[] = $row[0];
}

return $res;
}

// Alle Tabellen ermitteln
$tablesArray = getTables($db);

// Alle Spalten pro Tabelle ermitteln und durcharbeiten
foreach($tablesArray AS $table){

$affectedRows = 0;
$spalten = getColumns($table);

echo "Tabelle: " . $table . "<br />";

foreach($spalten AS $spalte){

echo "...Spalte: " . $spalte . "<br />";

$query = '
UPDATE `' . $table . '` SET
`' . $spalte . '` = REPLACE(`' . $spalte . '`,"ß", "ß"),
`' . $spalte . '` = REPLACE(`' . $spalte . '`, "ä", "ä"),
`' . $spalte . '` = REPLACE(`' . $spalte . '`, "ü", "ü"),
`' . $spalte . '` = REPLACE(`' . $spalte . '`, "ö", "ö"),
`' . $spalte . '` = REPLACE(`' . $spalte . '`, "Ä", "Ä"),
`' . $spalte . '` = REPLACE(`' . $spalte . '`, "Ãœ", "Ü"),
`' . $spalte . '` = REPLACE(`' . $spalte . '`, "Ö", "Ö"),
`' . $spalte . '` = REPLACE(`' . $spalte . '`, "€", "€")
';

mysql_query($query) OR die(mysql_error() . $query);
$affectedRows += mysql_affected_rows();

}

echo "Tabelle " . $table . " aktualisiert, Datensätze: " . $affectedRows . "<br /><br />";

}

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

eMail-Benachrichtigung bei Kommentaren. Auch möglich: Abo ohne Kommentar.