php/mySQLi: real_escape_string - Anwendungsfrage
Verfasst: 26.02.2016 10:07
Hallo zusammen
ich hab ein kleines Problem ... für ein neues Projektchen wollte ich direkt mal mit mySQLi anfangen - bisher nur mySQL genutzt - aber das fällt ja irgendwann aus php raus.
Ich hatte bisher immer eine kleine Funktion über der ich u.a. mysql_real_escape_string und trim gefahren habe - und was so angefallen ist:
Bevor jetzt eine Variable per insert, replace, update in die DB ging, wurde diese halt mit checking(); angepackt. Hatte den Vorteil - übersichtlicher, kürzer, keine 100x mysql_, trim... im Quelltext usw. und wenn ich mal was testen wollte - in der Funktion.
Das ganze klappt mit mySQLi nicht mehr.
mysql_real.... wird nicht unterstützt - klar.
Ich hab dann $mysqli->real_escape_string($db_insert); gefunden. Nur kann ich das nicht wie gewohnt in der Funktion einsetzen. Ok - vielleicht falsch gedacht. Also hab ich es vor dem Query-String eingesetzt:
(vereinfachte Darstellung vom "vorgeplänkel")
Es klappt ... nicht wirklich. Das real_escape_string macht nicht das gleiche wie mysql_real_escape_string.
Von den 10.000 Datensätzen die ich gerade importieren wollte, gingen nur 8500 rein. Die anderen 1500 will SQL nicht so akzeptieren:
/Die%20Toten%20Hosen%20(Anfang%20-%20Ende%20'02)/
Wie man hier sieht ist vor dem 02) ein ' ... ende im Gelände. Mit mysql_real_escape ging das sauber in die DB.
Was mache ich hier (grundlegend) falsch? Gehe ich mit real_escape den falschen weg?
EDIT:
wenn ich vor der erstellung der Query-Strings mit
arbeite, dann bekomm ich ca. 150 weitere Datensätze in die DB ... also auf die Variable $blabla klappt es. Aber ich habe ca. 10 Variablen wo das angewandt werden muß ... da wäre es mit der Funktion wieder schöner.
klappt natürlich nicht 
Gruß
Wuppi
ich hab ein kleines Problem ... für ein neues Projektchen wollte ich direkt mal mit mySQLi anfangen - bisher nur mySQL genutzt - aber das fällt ja irgendwann aus php raus.
Ich hatte bisher immer eine kleine Funktion über der ich u.a. mysql_real_escape_string und trim gefahren habe - und was so angefallen ist:
Code: Alles auswählen
function checking($stringg) {
$string = mysql_real_escape_string($stringg);
$string = trim($stringg);
[...]
return $string;
}
Das ganze klappt mit mySQLi nicht mehr.
mysql_real.... wird nicht unterstützt - klar.
Ich hab dann $mysqli->real_escape_string($db_insert); gefunden. Nur kann ich das nicht wie gewohnt in der Funktion einsetzen. Ok - vielleicht falsch gedacht. Also hab ich es vor dem Query-String eingesetzt:
(vereinfachte Darstellung vom "vorgeplänkel")
Code: Alles auswählen
// $blabla kommt aus einem XML und enthält z.b. /Die%20Toten%20Hosen%20(Anfang%20-%20Ende%20'02)/
$blabla = checking($blabla); // (ohne den real_escape_string; also eigentlich im Moment nur trim ...)
$db_insert = "insert .... $blabla"; // schwer vereinfachte Darstellung ;)
$mysqli->real_escape_string($db_insert);
$mysqli->query($db_insert);
Von den 10.000 Datensätzen die ich gerade importieren wollte, gingen nur 8500 rein. Die anderen 1500 will SQL nicht so akzeptieren:
/Die%20Toten%20Hosen%20(Anfang%20-%20Ende%20'02)/
Wie man hier sieht ist vor dem 02) ein ' ... ende im Gelände. Mit mysql_real_escape ging das sauber in die DB.
Was mache ich hier (grundlegend) falsch? Gehe ich mit real_escape den falschen weg?
EDIT:
wenn ich vor der erstellung der Query-Strings mit
Code: Alles auswählen
$blabla = $mysqli->real_escape_string($blabla);
Code: Alles auswählen
function checking($stringg) {
$string = trim($stringg);
$string = $mysqli->real_escape_string($string);
return $string;
}

Gruß
Wuppi