Heim > Datenbank > MySQL-Tutorial > Hauptteil

Können vorbereitete Anweisungen Datenbankbezeichner und Schlüsselwörter verarbeiten?

Linda Hamilton
Freigeben: 2024-11-18 18:46:02
Original
592 Leute haben es durchsucht

Can Prepared Statements Handle Database Identifiers and Keywords?

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:

    • Bezeichner einschließen Backticks (`).
    • Escape Backticks innerhalb der Variablen, indem Sie sie verdoppeln (``).
  • Schlüsselwörter:

    • Überprüfen Sie die vom Benutzer bereitgestellten Schlüsselwörter anhand von a Whitelist.
    • Verwenden Sie in der Abfrage nur Schlüsselwörter, die auf der Whitelist stehen.

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";
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage