-
-
Save pepebe/4554926 to your computer and use it in GitHub Desktop.
<?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 />"; | |
} |
Dude you are awesome, really, thank you very much!
Hi,
thanks for that script. I test it and it works great.
But I need a correction only for one table and two columns.
But I'm not a developer. Ist ist possible to customise your script for that purpose?
Thx
perfekt thx
Didn't work for PHP7 so i've done some changes. What licenes is this? Can we use that for friendica? https://github.com/friendica/friendica
`<?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 -
- @Updated hoergen for PHP7 (mysqli) 03.07.2017
*/
// === [ Content / Charset ] ==============================================
header('Content-Type: text/html; charset=utf-8');
// PHP auch explizit auf UTF-8 setzen
ini_set('display_errors', 'On');
mb_internal_encoding('UTF-8');
$db = array();
$db['host'] = 'localhost';
$db['uname'] = 'NAME';
$db['password'] = 'PASSWORT';
$db['database'] = 'DATENBANKNAME';
echo 'huhu';
$dbconnect = mysqli_connect($db['host'], $db['uname'], $db['password']) or die ("Konnte keine Verbindung zur Datenbank aufnehmen!");
mysqli_select_db($dbconnect,$db['database']) or die ("Fehler beim Auswählen der Datenbank!");
mysqli_set_charset($dbconnect,'utf8');
echo '
';function getTables($db){
global $dbconnect;
$result = mysqli_query($dbconnect,"SHOW TABLES FROM " . $db['database']);while($row = mysqli_fetch_row($result)){ $res[] = $row[0]; } return $res;
}
function getColumns($table){
global $dbconnect;
$table = mysqli_real_escape_string($dbconnect,$table);$mysqlres = mysqli_query($dbconnect,"SHOW COLUMNS FROM " . $table); while($row = mysqli_fetch_row($mysqlres)){ $res[] = $row[0]; } return $res;
}
// Alle Tabellen ermitteln
$tablesArray = getTables($db);echo 'nach getTables';
// 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 . '`, "€", "€") '; mysqli_query($dbconnect,$query) OR die(mysqli_error($dbconnect) . $query); $affectedRows += mysqli_affected_rows(); } echo "Tabelle " . $table . " aktualisiert, Datensätze: " . $affectedRows . "<br /><br />";
}
`
Forked it for PHP 7 support https://gist.github.com/CodeBrauer/99f8b268892d54a55e27dc21d1bb3f63
Thx