Das Escapezeichen einer Zeichenfolge bedeutet, die Mehrdeutigkeit der in dieser Zeichenfolge verwendeten Anführungszeichen (und anderer Zeichen) zu verringern. Wenn Sie beispielsweise eine Zeichenfolge definieren, umgeben Sie sie normalerweise entweder in doppelte oder einfache Anführungszeichen:
"Hello World."
Aber was ist, wenn meine Zeichenfolge doppelte Anführungszeichen enthält?
"Hello "World.""
Jetzt habe ich Mehrdeutigkeiten - der Interpreter weiß nicht, wo meine Zeichenfolge endet. Wenn ich meine doppelten Anführungszeichen behalten möchte, habe ich einige Optionen. Ich könnte einfache Anführungszeichen um meine Zeichenfolge verwenden:
'Hello "World."'
Oder ich kann meinen Zitaten entkommen:
"Hello \"World.\""
Jedes Anführungszeichen, dem ein Schrägstrich vorangestellt ist , wird maskiert und als Teil des Werts der Zeichenfolge verstanden.
Wenn es um Abfragen geht, hat MySQL bestimmte Schlüsselwörter, auf die wir achten, die wir nicht in unseren Abfragen verwenden können, ohne Verwirrung zu stiften. Angenommen, wir hatten eine Wertetabelle, in der eine Spalte "Select" heißt, und wir wollten Folgendes auswählen:
SELECT select FROM myTable
Wir haben jetzt einige Unklarheiten in unsere Abfrage eingeführt. Innerhalb unserer Abfrage können wir diese Mehrdeutigkeit durch Back-Ticks reduzieren:
SELECT `select` FROM myTable
Dies beseitigt die Verwirrung, die wir durch schlechtes Urteilsvermögen bei der Auswahl von Feldnamen eingeführt haben.
Vieles davon kann für Sie erledigt werden, indem Sie einfach Ihre Werte weitergeben mysql_real_escape_string()
. Im folgenden Beispiel sehen Sie, dass wir vom Benutzer übermittelte Daten über diese Funktion weiterleiten, um sicherzustellen, dass unsere Abfrage keine Probleme verursacht:
// Query
$query = sprintf("SELECT * FROM users WHERE user='%s' AND password='%s'",
mysql_real_escape_string($user),
mysql_real_escape_string($password));
Andere Verfahren existieren für die Flucht Strings, wie add_slashes
, addcslashes
, quotemeta
und mehr, wenn Sie feststellen , dass , wenn das Ziel eine sichere Abfrage auszuführen ist, im Großen und Ganzen Entwickler bevorzugen mysql_real_escape_string
oder pg_escape_string
(im Rahmen von PostgreSQL.