Ich möchte alle meine Saiten entkommen, die ich in meine Datenbank einfügen möchte. Aber mein Problem ist, weil ich mehr als 10.000 Saiten zu überprüfen, würden die Datenbankabfragen zu viel ...MySQL echte Flucht - eigene Flucht - o zu ö?
So verwende ich diese Escape-Funktion, die ich hier in stackoverflow.com gefunden:
function escape($value) {
$return = '';
for($i = 0; $i < strlen($value); ++$i) {
$char = $value[$i];
$ord = ord($char);
if($char !== "'" && $char !== "\"" && $char !== '\\' && $ord >= 32 && $ord <= 126)
$return .= $char;
else
$return .= '\\x' . dechex($ord);
}
return $return;
}
Es funktioniert. Aber mein Problem ist, dass ich habe keine ö
, ä
oder Zeichen wie die ...
Bevor ich nenne diese Funktion ich eine Zeichenfolge wie diese: Königsedition
und nachdem ich diese Funktion aufgerufen, soll ich K\xc3\x83\xc2\xb6nigsedition
bekommen. Aber das Problem ist, dass ich aus irgendeinem Grund Kxc3xb6nigsedition
in meiner Datenbank bekomme ...
Wie kann ich das zurück zu Königsedition
?
Oder, gibt es eine andere Möglichkeit, die Zeichenfolge zu entkommen, ohne dass die SQL echten Escape-Funktion zu verwenden, denn dann muß ich mehr als 10.000 SQL-Abfragen, um eine Zeichenfolge zu entkommen und die UTF 8
Formatierung zu halten? (Ich würde diesen Weg bevorzugen!)
Grüße und Danke!
Was ist mit parametrisierten Abfrage? – frz3993
"aus irgendeinem Grund" erhalten Sie eine Zeichenfolge in Ihrer Datenbank ... nicht vom Aufruf dieser "Escape" -Funktion Sie nicht. Sie würden eine Zeichenfolge in Ihrer Datenbank erhalten, weil Sie eine INSERT- oder UPDATE-Anweisung ausgeführt haben. Wenn Sie die Zeichenfolgenrückgabe von dieser "Escape" -Funktion einfügen, dann wäre das ein "Grund", dass Sie eine Zeichenfolge in Ihrer Datenbank erhalten. Ich verstehe nicht, warum Sie eine * andere * Zeichenkette erwarten als die, die Sie eingefügt haben, um in der Datenbank zu sein. Warum verwenden Sie diese Escape-Funktion? Ich verstehe den Zweck nicht. – spencer7593
Verwenden Sie einfach eine vorbereitete Anweisung mit Bindeplatzhaltern und geben Sie den Wert der einzufügenden Zeichenfolge an. Stellen Sie sicher, dass die Codierung der Zeichenfolgen als Werte übergeben wird, die * mit dem für den MySQL-Client und die Spalten angegebenen Zeichensatz übereinstimmen. https://dev.mysql.com/doc/refman/5.7/en/charset-connection.html – spencer7593