Ich mache ein kleines Ajax-Frage-Ergebnis-System. Wenn Benutzer etwas in das Textfeld eingeben, wird das Ergebnis automatisch gesucht und ausgegeben.Backslash vor Anführungszeichen hinzufügen, wenn String sie enthält - PHP
Problem ist, dass jedes Mal Benutzer die Frage eingibt, die "" oder "" enthält - die Suche ist nicht erfolgreich. Gibt es eine Möglichkeit, wie ich Backslash zu "" oder "" innerhalb der Zeichenfolge hinzufügen kann, so würde es ignoriert werden?
Oder gibt es einen Filter, der das "" oder "" ignoriert?
Ich brauche die Frage mit Anführungszeichen durchsucht werden, weil Fragen in der Datenbank sie enthält.
Hier ist der Code:
$q = $_POST['q'];
// for every " or ' in $q add \ before it
$results = array();
$result = array();
$count = 0;
$stmt = $dbh->prepare("SELECT result FROM quest WHERE quest LIKE '".$q."%'");
if($stmt->execute()){
$result = $stmt->fetchAll(PDO::FETCH_OBJ);
$count= $stmt->rowCount();
}
if($result != NULL){
foreach($result as $part){
foreach($part as $item){
$results[] = $item;
}
}
echo htmlentities($results[0], ENT_QUOTES, "UTF-8");
}
Sie müssen eine vorbereitete Aussage verwenden, deshalb. MySQL beschwert sich darüber, aber Sie geben es nicht die Chance ;-) –
Ich bin nicht damit einverstanden, dass dies ein Duplikat @Fred -ii- ist. Ich weiß, dass Ihre Absichten die besten sind, aber vielleicht würde jemand nicht erkennen, dass es fast das selbe wie SQL Injection ist (und ich würde nach dieser Art von Frage suchen) :) –
* "Jetzt sehe ich. Danke für Hilfe. Ich werde als korrekt in 6 Minuten markieren. - Dawid Zbiński vor 5 Minuten "* - und das Duplikat ist was, Affen aus dem Regenwald bringen? Wie nennen Sie das http://php.net/manual/en/pdo.prepared-statements.php aus der Antwort, die Sie angenommen haben? und http://stackoverflow.com/a/60496/ von der Täterin. –