PDO::quote

(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.2.1)

PDO::quote Setzt eine Zeichenkette für die Verwendung in einer Abfrage in Anführungszeichen

Beschreibung

publicPDO::quote(string$string, int$type = PDO::PARAM_STR): string|false

PDO::quote() schließt die angegebene Zeichenkette (falls erforderlich) in Anführungszeichen ein und maskiert Sonderzeichen innerhalb der Zeichenkette, wobei ein für den zugrundeliegenden Treiber geeigneter Stil der Anführungszeichen verwendet wird.

Wenn SQL-Anweisungen mit dieser Funktion erstellt werden, wird dringend empfohlen, PDO::prepare() zu verwenden, um SQL-Anweisungen mit gebundenen Parametern vorzubereiten, anstatt PDO::quote() zu verwenden, um Benutzereingaben in eine SQL-Anweisung einzufügen. Vorbereitete Anweisungen mit gebundenen Parametern sind nicht nur portabler, bequemer und immun gegen SQL-Injections, sondern lassen sich oft auch viel schneller ausführen als interpolierte Abfragen, da sowohl der Server als auch der Client die Abfragen in einer bereits kompilierten Form zwischenspeichern können.

Diese Methode ist nicht bei allen PDO-Treibern implementiert (insbesondere nicht bei PDO_ODBC). In diesem Fall sollten stattdessen vorbereitete Anweisungen verwendet werden.

Achtung

Sicherheit: Der voreingestellte Zeichensatz

Der Zeichensatz muss je nach Treiber entweder auf Serverebene oder in der Datenbankverbindung selbst eingestellt werden, damit er sich auf PDO::quote() auswirkt. Weitere Informationen sind in der Treiberspezifischen Dokumentation zu finden.

Parameter-Liste

string

Die Zeichenkette, die in Anführungszeichen gesetzt werden soll

type

Gibt Treibern, die andere Anführungszeichen verwenden, einen Hinweis auf den Datentyp. Zum Beispiel teilt PDO_PARAM_LOB dem Treiber mit, dass er binäre Daten maskieren soll.

Rückgabewerte

Gibt eine Zeichenkette in Anführungszeichen zurück, die theoretisch bedenkenlos an eine SQL-Anweisung übergeben werden kann, oder false, wenn der Treiber diese Anführungszeichen nicht unterstützt.

Beispiele

Beispiel #1 Schützen einer normalen Zeichenkette

<?php
$conn
= new PDO('sqlite:/home/lynn/music.sql3');


$string = 'Nice';
print
"Nicht abgeschirmte Zeichenkette: $string\n";
print
"Abgeschirmte Zeichenkette: " . $conn->quote($string) . "\n";
?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

Nicht abgeschirmte Zeichenkette: Nice Abgeschirmte Zeichenkette: 'Nice'

Beispiel #2 Schützen einer gefährlichen Zeichenkette

<?php
$conn
= new PDO('sqlite:/home/lynn/music.sql3');


$string = 'Naughty \' string';
print
"Nicht abgeschirmte Zeichenkette: $string\n";
print
"Abgeschirmte Zeichenkette: " . $conn->quote($string) . "\n";
?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

Nicht abgeschirmte Zeichenkette: Naughty ' string Abgeschirmte Zeichenkette: 'Naughty '' string'

Beispiel #3 Schützen einer komplexen Zeichenkette

<?php
$conn
= new PDO('sqlite:/home/lynn/music.sql3');


$string = "Co'mpl''ex \"st'\"ring";
print
"Nicht abgeschirmte Zeichenkette: $string\n";
print
"Abgeschirmte Zeichenkette: " . $conn->quote($string) . "\n";
?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

Nicht abgeschirmte Zeichenkette: Co'mpl''ex "st'"ring Abgeschirmte Zeichenkette: 'Co''mpl''''ex "st''"ring'

Siehe auch

To Top