Zum Inhalt springen

real_escape_string

In diesem Artikel werden wir die Funktion mysqli_real_escape_string() in PHP diskutieren, die zum Escapen von Sonderzeichen in Strings verwendet wird, die in SQL-Abfragen eingesetzt werden.

Einführung in die mysqli_real_escape_string() Funktion

Diese integrierte PHP-Funktion escapet Sonderzeichen in Strings, die für SQL-Abfragen bestimmt sind. Sie hilft dabei, SQL-Injection-Angriffe zu verhindern, die auftreten, wenn böswillige Benutzer schädlichen SQL-Code in von der Datenbank ausgeführte Anweisungen einschleusen.

Verwendung der mysqli_real_escape_string() Funktion

Die Verwendung der Funktion mysqli_real_escape_string() ist unkompliziert. Hier ist ein Beispiel:

php
<?php
$con = mysqli_connect('localhost', 'username', 'password', 'database');

if (!$con) {
    exit('Could not connect: ' . mysqli_error($con));
}

// Set charset to prevent multi-byte character vulnerabilities
mysqli_set_charset($con, 'utf8mb4');

$name = "John O'Reilly";
$name = mysqli_real_escape_string($con, $name);

$sql = "INSERT INTO customers (name) VALUES ('$name')";

if (!mysqli_query($con, $sql)) {
    exit('Error: ' . mysqli_error($con));
}

echo '1 record added';

mysqli_close($con);
?>

In diesem Beispiel stellen wir zunächst eine Verbindung zu einer MySQL-Datenbank mit mysqli_connect() her. Anschließend definieren wir eine $name-Variable, die ein einfaches Hochkomma enthält. Durch den Aufruf von mysqli_real_escape_string() wird dieses Komma escaped, wodurch sichergestellt wird, dass die SQL-Anweisung ohne Syntaxfehler ausgeführt wird. Wir erstellen eine INSERT-Abfrage für die Tabelle customers, führen sie mit mysqli_query() aus und geben eine Erfolgsmeldung aus.

Hinweis: Legen Sie immer den Zeichensatz der Verbindung (z. B. mysqli_set_charset($con, 'utf8mb4')) vor dem Escapen fest, um Mehrbyte-Zeichen-Schwachstellen zu vermeiden. Obwohl diese Funktion funktioniert, wird in der modernen PHP-Entwicklung aus Sicherheitsgründen dringend die Verwendung von Prepared Statements mit parametrisierten Abfragen empfohlen.

Fazit

Die Funktion mysqli_real_escape_string() bleibt ein praktisches Werkzeug zum Escapen von Sonderzeichen in SQL-Abfragen. Das korrekte Escapen von Benutzereingaben trägt dazu bei, Ihre Anwendung sicher und Ihre Daten geschützt zu halten.

Praxis

Was macht die PHP-Funktion mysql_real_escape_string?

Finden Sie das nützlich?

Dual-run-Vorschau — vergleichen Sie mit den Symfony-Routen live.