Vorbereitete Anweisungen: Können sie mit Bezeichnern und Schlüsselwörtern umgehen?
Dynamische Abfragen nutzen Variablen, um Tabellen, Felder und Suchwerte anzugeben. Während sich das Verketten von Variablen in der Abfrage als erfolgreich erwiesen hat, führt die Verwendung von PDOs bindParam() oder bindValue() zum Binden von Variablen zu leeren Arrays.
Warum es nicht funktioniert:
PDO-vorbereitete Anweisungen erlauben nur Platzhalter für Datenliterale. Der Versuch, Bezeichner (Tabellen- oder Feldnamen) oder Schlüsselwörter mithilfe von Platzhaltern darzustellen, funktioniert nicht.
Die Lösung:
Bezeichner: Um Variablen einzuschließen, die Bezeichner darstellen, befolgen Sie diese Regeln:
Schlüsselwörter:
Beispielcode:
// Safely format identifier $field = "`" . str_replace("`", "``", $field) . "`"; $sql = "SELECT * FROM t ORDER BY $field"; // Whitelist keyword $dir = $_GET['dir'] == 'DESC' ? 'DESC' : 'ASC'; $sql = "SELECT * FROM t ORDER BY field $dir";
Das obige ist der detaillierte Inhalt vonKönnen vorbereitete Anweisungen Datenbankbezeichner und Schlüsselwörter verarbeiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!