(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
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.
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.
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.
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.
Beispiel #1 Schützen einer normalen Zeichenkette
<?php
$conn = new PDO('sqlite:/home/lynn/music.sql3');
/* Einfache Zeichenkette */
$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');
/* Gefährliche Zeichenkette */
$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');
/* Komplexe Zeichenkette */
$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'