Heim > Datenbank > MySQL-Tutorial > Hauptteil

Warum mysql_real_escape_string anstelle von Addslashes für MySQL-Abfragen verwenden?

DDD
Freigeben: 2024-11-14 16:47:02
Original
407 Leute haben es durchsucht

Why Use mysql_real_escape_string Instead of addslashes for MySQL Queries?

Die Unterschiede zwischen mysql_real_escape_string und addslashes verstehen

In PHP werden häufig zwei Funktionen zum Escapen von Zeichenfolgen verwendet, bevor sie in Datenbankabfragen verwendet werden: mysql_real_escape_string und addslashes. Obwohl beide ähnliche Zwecke erfüllen, gibt es feine Unterschiede, die berücksichtigt werden müssen.

fügt Schrägstriche hinzu

Diese Funktion fügt Backslashes vor bestimmten Zeichen hinzu: ' (einfaches Anführungszeichen), " (doppeltes Anführungszeichen). ), (Backslash) und NUL (das NULL-Byte) Es trägt zum Schutz vor SQL-Injection-Angriffen bei, indem verhindert wird, dass diese Zeichen als Teil von interpretiert werden query.

mysql_real_escape_string

Diese in PHP 7.3.0 veraltete Funktion wurde speziell für MySQL entwickelt. Sie fügt Backslashes zu Zeichen hinzu, die von MySQL maskiert werden müssen x00, n, r, x1a, ' (einfaches Anführungszeichen) und " (doppeltes Anführungszeichen). Es ist jedoch wichtig zu beachten, dass die tatsächliche Implementierung von Escapezeichen in MySQL zusätzliche Zeichen beinhalten kann.

Bedeutung von Zeichen ohne Escapezeichen in mysql_real_escape_string

Der Hauptunterschied zwischen den beiden Funktionen liegt in den Zeichen, die nicht durch Addslashes maskiert werden. Dazu gehören:

  • x00: Dieses Zeichen stellt das NULL-Byte dar, das häufig verwendet wird, um das Ende einer Zeichenfolge in C und anderen Programmiersprachen zu markieren. Durch das Escapen wird verhindert, dass die Abfrage vorzeitig beendet wird.
  • n: Dieses Zeichen stellt ein Zeilenumbruchzeichen dar. Durch das Escapen wird sichergestellt, dass es als Teil der Zeichenfolge in der Abfrage behandelt wird, anstatt eine sofortige Rückkehr zur nächsten Zeile zu verursachen.
  • r: Dieses Zeichen stellt ein Wagenrücklaufzeichen dar. Es zu maskieren ist aus demselben Grund wie n wichtig.
  • x1a: Dieses Zeichen ist als „Control-Z“-Zeichen bekannt und kann bei MySQL-Abfragen zu unerwartetem Verhalten führen. Durch das Escapen werden potenzielle Probleme vermieden.

Empfehlung

Es wird generell empfohlen, die Escape-Funktion Ihres Datenanbieters zu verwenden, z. B. mysql_real_escape_string, anstelle von Addslashes. Dadurch wird sichergestellt, dass die Zeichenfolge entsprechend für die jeweilige verwendete Datenbank vorbereitet wird. Obwohl mysql_real_escape_string veraltet ist, ist es wahrscheinlich, dass neuere Versionen von PHP über ähnliche Ersatzfunktionen für Escapezeichenfolgen in MySQL-Abfragen verfügen.

Das obige ist der detaillierte Inhalt vonWarum mysql_real_escape_string anstelle von Addslashes für MySQL-Abfragen verwenden?. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage