Können PDO-vorbereitete Anweisungen Bezeichner oder Syntaxschlüsselwörter binden?
Bei einem Versuch, eine dynamische Abfrage mit Variablen zu erstellen, die eine Tabelle oder ein Feld darstellen /column und einen Wert, nach dem gesucht werden muss, kann es bei der Verwendung der vorbereiteten Anweisungen von PDO zu unerwarteten Schwierigkeiten kommen. Insbesondere die Verwendung von bindParam() oder bindValue() zum Binden dieser Variablen kann zu leeren Ergebnismengen führen.
Um dem Kern des Problems auf den Grund zu gehen, ist es wichtig zu verstehen, dass PDO-Platzhalter zur Darstellung von Datenliteralen bestimmt sind. Daher kann der Versuch, sie als Bezeichner (wie Tabellen- oder Feldnamen) oder Syntaxschlüsselwörter (z. B. „LIKE“) zu verwenden, zu fehlerhaftem Verhalten führen.
Insbesondere bietet PDO keine inhärente Unterstützung für Bindungsbezeichner . Dies bedeutet, dass Entwickler die Verantwortung für den Umgang mit diesen Kennungen selbst übernehmen müssen. Um eine ordnungsgemäße Ausführung sicherzustellen, müssen strenge Regeln eingehalten werden:
Regeln für Bindungsbezeichner:
Diese Formatierungsregeln Verhindern Sie Syntaxfehler und SQL-Injection-Schwachstellen.
Regeln für die Bindung von Syntax-Schlüsselwörtern:
Beispiel:
Betrachten Sie den folgenden Codeausschnitt, der die oben genannten Regeln einhält:
$allowed = array("name", "price", "qty"); $key = array_search($_GET['field'], $allowed); $field = $allowed[$key]; $query = "SELECT $field FROM t"; // Value is safe
Zusammenfassend: Während PDO-vorbereitete Anweisungen sich durch die Bindung von Datenliteralen auszeichnen, fehlt ihnen die Unterstützung für Bindungsbezeichner oder Syntaxschlüsselwörter. Durch die sorgfältige Befolgung der dargelegten Regeln können Entwickler die sichere und genaue Ausführung dynamischer Abfragen gewährleisten, die diese kritischen Komponenten nutzen.
Das obige ist der detaillierte Inhalt vonKönnen mit PDO vorbereitete Anweisungen Tabellen- und Spaltennamen oder SQL-Schlüsselwörter binden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!