Datenbank-Query zum Ersetzen funktioniert nicht

Eiskaffe

Mitglied
Hallo Damen und Herren,

vielleicht könnt Ihr mir weiter helfen, ich habe eine Function geschrieben die alles aus der Spalte ändert, die zb ä zu ä ändert oder ü zu ü usw.. Aber wenn ich die Function ausführe passiert nichts, ich habe das ganze mal geechot habs in phpmyadmin auf SQL Abfrage laufen lassen und er hat alles geändert genau das was ich wollte und da kommt die Frage, warum ändert die Function das dan nicht automatisch in der datenbank? Habt Ihr vielleicht ein Plan? bin für jede Hilfe dankbar.

PHP:
function datenbankUmlaute()
{
	$sql = "UPDATE 
				global_benutzer 
			SET
			  geschlecht=replace(geschlecht,'ß', 'ß'),
			  geschlecht=replace(geschlecht, 'ä', 'ä'),
			  geschlecht=replace(geschlecht, 'ü', 'ü'),
			  geschlecht=replace(geschlecht, 'ö', 'ö'),
			  geschlecht=replace(geschlecht, 'Ä', 'Ä'),
			  geschlecht=replace(geschlecht, 'Ãœ', 'Ü'),
			  geschlecht=replace(geschlecht, 'Ö', 'Ö'),
			  geschlecht=replace(geschlecht, '€', '€')";

	mysql_query($sql);
}

Mit freundlichen Grüßen
David Koch
 
Zuletzt bearbeitet:
Was mir spontan einfallen würde:

- Falsches Encoding: in der PHP-Datei oder bei der DB-Verbindung
 
Das lustige ist ja das alles steht :/ die Config ist eingebunden, was meinst du mit Falsches Encoding? Dieser Begriff ist mir unbekannt :D
 
Das lustige ist ja das alles steht :/ die Config ist eingebunden, was meinst du mit Falsches Encoding? Dieser Begriff ist mir unbekannt :D

Das ein anderes Encoding vom SQL-Server angenommen wird, als du verschickt hast. Für den Begriff Encoding bitte bei Wikipedia oÄ. nachlesen. Im Prinzip sind das Regeln, wie man bestimmte Zeichen als Bytereihenfolge kodiert.

Hast du versucht folgendes Statement ganz am Anfang als erstes SQL-Query auszuführen?
SQL:
SET NAMES utf8

Lies dir auch mal das hier wg. Sicherheit durch: http://php.net/manual/en/mysqlinfo.concepts.charset.php
 
Es tut mir grad wirklich leid das ich das nicht versteh, wo genau muss ich das
PHP:
 SET NAMES utf8
anhängen? meinst du so?
PHP:
function datenbankUmlaute()
{
	$sql = "UPDATE 
				global_benutzer 
			SET NAMES utf8
			  geschlecht=replace(geschlecht,'ß', 'ß'),
			  geschlecht=replace(geschlecht, 'ä', 'ä'),
			  geschlecht=replace(geschlecht, 'ü', 'ü'),
			  geschlecht=replace(geschlecht, 'ö', 'ö'),
			  geschlecht=replace(geschlecht, 'Ä', 'Ä'),
			  geschlecht=replace(geschlecht, 'Ãœ', 'Ü'),
			  geschlecht=replace(geschlecht, 'Ö', 'Ö'),
			  geschlecht=replace(geschlecht, '€', '€')
			  ";
			  
			  echo $sql;
	mysql_query($sql);
}
sry ich versteh meistens nur Beispiele :D
 
Eins versteh ich sowieso nicht warum das überhauptnicht funktioniert mit dem hier
PHP:
function datenbankUmlaute() 
{ 
    $sql = "UPDATE  
                global_benutzer  
            SET
              geschlecht=replace(geschlecht,'ß', 'ß'), 
              geschlecht=replace(geschlecht, 'ä', 'ä'), 
              geschlecht=replace(geschlecht, 'ü', 'ü'), 
              geschlecht=replace(geschlecht, 'ö', 'ö'), 
              geschlecht=replace(geschlecht, 'Ä', 'Ä'), 
              geschlecht=replace(geschlecht, 'Ãœ', 'Ü'), 
              geschlecht=replace(geschlecht, 'Ö', 'Ö'), 
              geschlecht=replace(geschlecht, '€', '€') 
              "; 
               
              echo $sql; 
    mysql_query($sql); 
} 

// am ende kommt das raus und das kann man in der SQL Abfrage eingeben und alles klappt 
UPDATE global_benutzer SET geschlecht=replace(geschlecht,'ß', 'ß'), geschlecht=replace(geschlecht, 'ä', 'ä'), geschlecht=replace(geschlecht, 'ü', 'ü'), geschlecht=replace(geschlecht, 'ö', 'ö'), geschlecht=replace(geschlecht, 'Ä', 'Ä'), geschlecht=replace(geschlecht, 'Ãœ', 'Ü'), geschlecht=replace(geschlecht, 'Ö', 'Ö'), geschlecht=replace(geschlecht, '€', '€')


mfg
David Koch
 
Als eigenen SQL-Befehl absetzen!

Sprich:
SQL:
// wg. Sicherheitsaspekt
mysql_query('SET NAMES UTF8');
mysql_set_charset ('utf8');

Aber du weißt schon, dass die MySQL-Erweiterung veraltet ist schon entfernt (wenn auch nur in neueren Versionen v. PHP) ist?
 
Zurück