MySQL-Escape-Funktionen: mysql_real_escape_string vs. addslashes
Die PHP-Funktionen mysql_real_escape_string() und addslashes() werden beide verwendet, um potenziell problematische Zeichen zu maskieren in Strings, die zum Einfügen in MySQL-Datenbanken bestimmt sind. Es gibt jedoch subtile Unterschiede zwischen den beiden Funktionen, die sich auf ihre Eignung für verschiedene Anwendungsfälle auswirken können.
addslashes()
addslashes() ersetzt einen vordefinierten Satz von Zeichen mit Backslashes versehen, um zu verhindern, dass sie von der Datenbank als Sonderzeichen interpretiert werden. Der Standardsatz von Zeichen, die durch addslashes() maskiert werden, umfasst das einfache Anführungszeichen ('), das doppelte Anführungszeichen ("), den Backslash () und das NULL-Byte.
mysql_real_escape_string()
mysql_real_escape_string() umschließt einen Aufruf der internen mysql_real_escape_string()-Funktion von MySQL, die maskiert wird ein breiterer Zeichenbereich als addslashes(). Insbesondere maskiert mysql_real_escape_string() die folgenden Zeichen:
Hauptunterschiede
Der Hauptunterschied zwischen mysql_real_escape_string() und addslashes() liegt in der Handhabung der oben erwähnten Escape-Zeichen. mysql_real_escape_string() maskiert bestimmte Zeichen, die addslashes() nicht tut, wie z. B. das NULL-Byte, den Zeilenvorschub und den Wagenrücklauf.
Darüber hinaus führt mysql_real_escape_string() die Escape-Operation basierend auf den von MySQL definierten Regeln aus, die kann von den von addslashes() angewendeten Escape-Regeln abweichen. In neueren MySQL-Versionen kann es beim String-Escape beispielsweise vorkommen, dass die Anführungszeichen verdoppelt werden, statt ihnen Backslashes voranzustellen. mysql_real_escape_string() würde diese Änderungen automatisch verarbeiten, während addslashes() dies nicht tun würde.
Wann soll welche Funktion verwendet werden
Im Allgemeinen wird mysql_real_escape_string() gegenüber addslashes() bevorzugt zum Escapen von Zeichenfolgen, die für MySQL-Datenbanken gedacht sind. Dies liegt daran, dass mysql_real_escape_string() MySQL-spezifische Escape-Regeln verwendet, um sicherzustellen, dass Zeichenfolgen ordnungsgemäß für das Einfügen in MySQL-Abfragen vorbereitet werden.
Andererseits kann addslashes() in Situationen geeignet sein, in denen Sie Zeichenfolgen maskieren müssen für andere Zwecke, z. B. allgemeine Textbearbeitung oder Vorbereiten von Zeichenfolgen für die Anzeige. Es ist jedoch wichtig, sich der Einschränkungen von addslashes() bewusst zu sein und Ihren Code gründlich zu testen, wenn Sie ihn zum Escapen von Zeichenfolgen verwenden, die für MySQL-Datenbanken gedacht sind.
Das obige ist der detaillierte Inhalt vonWelche Escape-Funktion ist besser für MySQL: „mysql_real_escape_string' oder „addslashes'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!