Heim > Datenbank > MySQL-Tutorial > Welche Escape-Funktion ist besser für MySQL: „mysql_real_escape_string' oder „addslashes'?

Welche Escape-Funktion ist besser für MySQL: „mysql_real_escape_string' oder „addslashes'?

Susan Sarandon
Freigeben: 2024-11-12 15:50:02
Original
1054 Leute haben es durchsucht

Which escaping function is better for MySQL: `mysql_real_escape_string` or `addslashes`?

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:

  • x00 (NULL-Byte)
  • n (Zeilenvorschub)
  • r (Wagenrücklauf)
  • , (Komma)
  • ' (einfaches Anführungszeichen)
  • " (doppeltes Anführungszeichen)
  • x1a (EOF (Ende der Datei))

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage