Sonderzeichen mit MySQL
Marc
- php
0 Tobias Kloth0 Marc0 Tobias Kloth0 Marc
0 Tom
Hallo Forum
ich habe eine frage bezüglich dem handling von sonderzeichen.
Wenn ich ein textfeld einlese und dessen inhalt in eine mysql datenbank abspeichere, wende ich zuvor den befehl AddSlashes($text) an, damit alle sonderzeichen insvesondere das Hochkomma umgesetzt werden.
Nun, das nachträgliche Auslesen stellt keine weiteren Probleme dar, ausser wenn ich den Inhalt z.B: "Roger's" als value in ein Textfeld als Vordefinition einfügen möchte. Es wird nur "Roger" dargestellt. Was muss ich hier unternehmen?
Herzlichen Dank
Marc
Hallo Marc,
Wenn ich ein textfeld einlese und dessen inhalt in eine mysql datenbank abspeichere, wende ich zuvor den befehl AddSlashes($text) an, damit alle sonderzeichen insvesondere das Hochkomma umgesetzt werden.
Dafür ist eigentlich die Funktion mysql_escape_string() (->http://de3.php.net/mysql_escape_string) gedacht, die maskiert gleich genau die Zeichen die in einem Query "gefährlich" werden könnten.
[...] Es wird nur "Roger" dargestellt. Was muss ich hier unternehmen?
uns deinen Code zeigen (zumindest den relevanten Teil davon).
Grüße aus Nürnberg
Tobias
Hallo Tobias
Danke schon mal!
Nun, hier mal meinen Code teil, welcher das Textfeld "zusammenbaut":
Hierbei kommt $fieldData direkt aus der DB...
function getMyDesign($fieldName,$fieldData,$function)
{
if($function!="edit") echo $fieldData;
else
{
echo "<input type=text name='$fieldName' ";
echo "style='font-family:Verdana;font-size:8pt;background-color:#ffffff;border-style:solid;border-width:1px;height:18px;width:180px'";
echo " value='$fieldData'>";
}
}
Grüsse aus Zürich
Hallo Marc,
echo " value='$fieldData'>";
da haben wir den Übeltäter ja schon :-)
Schau dir mal den Quellcode an der im Browser ankommt, wenn in $fieldData "Roger's" drinsteht - richtig, da steht dann
...value='Roger's'>
und woher soll der Brower wissen, an welchem ' der Wert zu Ende ist? Du solltest besser nicht ' sondern " zum Umschließen der Werte verwenden und http://de.php.net/htmlspecialchars auf den Wert loslassen (bzw. htmlspecialchars() mit ENT_QUOTES verwenden). Deine Zeile oben könnte dann also so aussehen:
echo ' value="'.htmlspecialchars($fieldData).'">';
dann kann eigentlich nichts mehr schiefgehen (zudem ist echo '...' auch noch schneller als echo "...")
Grüße aus Nürnberg
Tobias
Super!
Herzlichen Dank, du hast mir sehr geholfen!
Grüsse, Marc
Hallo Marc,
da setz Dich mal mit Obelix [pref:t=61507&m=346955] auseinander. Der ist da schon zwei Runden weiter als Du. Alles nochmal zu schreiben, ist mir dann zu müßig. :-)
Liebe Grüße
Tom