pepebe
1/17/2013 - 9:52 AM

SQL: Repair German "Umlaute" inside a MySQL Database.

SQL: Repair German "Umlaute" inside a MySQL Database.

<?php 
/** 
 * Alle kaputten Umlaute reparieren bei Umstellung von ISO->UTF8 
 * Source: http://xhtmlforum.de/66480-kleines-skript-alle-umlaute-der-datenbank.html
 * 
 * @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 />"; 
     
}