-
-
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 <[email protected]> | |
* @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 />"; | |
} |
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 [email protected]
- @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
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