• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Wie umgehen mit Umlauten PHP und SQL

Don83

Mitglied
Hallo Leute,
ich sitze gerade vor einem Problem.
Thema Umlaute!
Also ich habe Umlaute in der Datenbank wie folgend gespeichert:
Bsp.: 'Wollmütze'
Also die Werte mit PHP aus der Datenbank zu ziehen ist kein Problem.
Die Wollmütze wird ja dann automatisch in die Wollmütze umgewandelt.

Ich hänge nun gerade vor der Umkehrung:
Ich möchte in PHP quasi folgende Anfrage stellen:
SELECT kopfumfang from items where item_name ='Wollmütze';
Ich hab die Anfrage mal getestet und anscheinend wandelt php das "ü" direkt um.
Also:
SELECT konstitution from items where item_name ='Wollmütze';
So nun das Problem...
Ich habe den Aufruf mal in PHPmyAdmin getestet und das & und ; bereiten Probleme.
Damit die Anfrage funktioniert müsste man die Anfrage zu folgender Anfrage umwandeln.
SELECT konstitution from items where item_name ='Wollm\&uuml\;tze';

Aber das alles geht irgendwie nicht : /....

Hat da jemand eine Idee wie sich das ganze lösen lässt.
PS: im internet stand einiges von htmlentitiy() aber hat irgendwie nicht geholfen.

Hi,
habe endlich was gefunden:
Umlaute, UTF-8 und PHP: wenn Sonderzeichen falsch dargestellt werden | sjmFREELANCING Development-Blog

Super Anleitung!
 
Zuletzt bearbeitet von einem Moderator:
da hättest du nur mal weiter runterscrollen müssen zu den tutorials, da steht alles.

Nils aka XraYSoLo
 
Hallo,

das Problem fängt schon an, wenn du einen neuen Eintrag in die Datenbank einträgst. Die Umlaute sollten nicht durch die ISO 8859-1 Kodierung ersetzt werden (also ä => ä vermeiden). Nutze stattdessen als Datenbank- und Spaltentyp utf8_unicode_ci

Beim Eintragen sollten Funktionen wie htmlentities oder nl2br vermieden werden:

PHP:
// FALSCH
$value = nl2br(htmlentities(mysql_real_escape_string($_POST["feldname"])));

// RICHTIG
$value = mysql_real_escape_string($_POST["feldname"]);

$sql ="INSERT INTO
                  `tabelle`
       SET
                  `spalte` = '" . $value . "'
";

htmlentities() und nl2br() setzt du bei der Ausgabe ein, sofern notwendig.

Noch ein paar nützliche Links:

[Erledigt] strtolower mit utf8 macht aus allen nichtdeutschen buchstaben fragezeichen - php.de

Codierung von GET-Daten ( UTF-8 ) - php.de

Gruß
 
Zurück
Oben