Ich verwende ein HTML-Eingabeelement, um Daten von einem Benutzer zu akzeptieren und in einer MySQL-Datenbank zu speichern. Dazu benutze ich PHP und mysqli, um eine vorbereitete Anweisung zu erstellen.PHP/SQL vorbereitete Anweisung mit doppelten Anführungszeichen
Das funktioniert sehr gut, bis ich versuche, eine Eingabezeichenfolge zu akzeptieren, ein doppeltes Anführungszeichen (") enthält. Wenn die Eingabezeichenfolge ein Anführungszeichen enthält, gespeichert wird die Daten bis zu den doppelten Anführungszeichen die Zeichenfolge sein.
Zum Beispiel:
Ich sah eine 7'9 "Person.
ich mir 7'9
sah mich hoch und niedrig gesucht, aber keine Lösung finden kann:
Wird als gespeichert werden. Ich habe versucht, mysqli_real_escape_string, aber das Hinzufügen von Backslashes nur um aussagekräftige Zeichen zu entkommen. Wenn die umgekehrten Schrägstriche mit der vorbereiteten Anweisung verknüpft werden, werden sie wörtlich interpretiert und das doppelte Anführungszeichen unterbricht die Zeichenfolge weiterhin. So würde mein Beispiel sein:
ich eine 7 \ 'sah 9
Ich dachte, vielleicht sogar die PHP wurde nicht die gesamte Zeichenfolge aus dem Eingangselement bekommen, aber wenn ich des Elements Wert Echo, ich tun Sieh dir die ganze Zeichenfolge an.
Hier ist ein Beispielcode. Ich habe einige geschäftliche Details entfernt, aber das versuche ich im Allgemeinen.
$sqlSave = $objConnection->prepare('update tbl set Answer=? where ID=?;');
$sqlSave->bind_param("si", $sqlAnswer, $sqlID);
$sqlSave->execute();
Ich fühle mich wie ich etwas offensichtlich fehlen, so bitte vergib meine Unwissenheit. Jede Hilfe oder zusätzliche Information wird geschätzt.
Was ist die Länge der Spalte? Doppelte Anführungszeichen nicht ein Problem haben sollte, mit der Code, den du zeigst – chris85
Die Spalte ist VARCHAR (200). – Josh
Die Datenbank hat es abgeschnitten, oder es in einem Browser hat es abgeschnitten? Wenn Sie in einem Element wie "Eingabe" ausgeben Das doppelte Zitat schließt das Attribut "value". – chris85