Ihre Speicherprozedur ist korrekt. (obwohl htmlspecialchars und/oder Trim ist wahrscheinlich nicht erforderlich - aber ich weiß nicht über Ihre Anwendung)
von den Informationen, die Sie zur Verfügung stellen gibt es keinen Grund für Ihr Problem gesehen werden.
Der nächste Debugging-Ansatz würde dann daran erinnern, was auch immer Sie geändert haben oder auf Ihrem System geändert wurde (maby verwenden Sie ein 3rd-Party-Installations-Image?).
wenn das fehlschlägt, dh auf wilde erraten mögliche Ursachen übrig ist, für das bieten i ein erster:
mysql in NO_BACKSLASH_ESCAPES -Mode ausgeführt werden, was Spielraümen verursachen würde als normale Zeichen behandelt werden.
Darüber hinaus sieht es so aus, als würden Sie Ihre Strings in doppelte Anführungszeichen setzen, die dann ein einfaches Anführungszeichen - das normalerweise mit Escapezeichen versehen wird - direkt in Ihre Datenbank einfügen, gefolgt von einem umgekehrten Schrägstrich.
es ist sehr wahrscheinlich auch möglich, dass - wie Sie Ihre Strings mit doppelten Anführungszeichen innerhalb Ihrer SQL-Anweisungen wickeln, die nicht so ist, wie es sein sollte, und ich bin verwirrt erhalten Sie keine Syntaxverletzung Fehler, Sie enden mit einer Abfrage wie "john\'s house"
, die durch das einfache Zitat aus mysql_real_escape verursacht wird, das korrekt wäre, wenn Sie Ihre Abfrage korrekt in einfache Anführungszeichen eingeschlossen hätten.
was mich zu der Frage führt. erhalten Sie einen Syntaxfehler (oder eine injizierte Abfrage), wenn Sie doppelte Anführungszeichen einfügen möchten?
wie für Ihren Kommentar. Sie könnten sehr gut Anweisungen mit pdo vorbereiten und dann die Abfragezeichenfolge daraus erzeugen und sie mit mysql-Funktionen ausführen. Aber ich verstehe, dass dies keine Lösung für Ihr Problem ist.
Bitte versuchen Sie auch, Ihre gesamte Abfrage in nur eine Variable zu setzen und diese direkt auszudrucken, bevor Sie sie ausführen. dann schaue es dir an und folge irgendeiner falschen Manipulation, um die Operation auszuführen, die ausgeführt wird, um die Zeichenkette zu erzeugen.
Können Sie einige Beispieldaten und -code zeigen? –
Um es Ihnen zu sagen, mysql_real_escape_string reinigt nichts. Es ist nicht "Reinigungs" -Funktion überhaupt. Go figure –
Könnten Sie vielleicht einen Code-Schnipsel geben, macht es viel einfacher, das Problem zu identifizieren. @ Col. Schrapnell: Nun, es entkommt Sonderzeichen, das könnte gesagt werden, ist ein "Reinigungs" -Prozess, denke, das ist die Frage der Interpretation, obwohl –