Was ist eine parametrisierte Abfrage, und was wäre ein Beispiel für eine solche Abfrage in PHP und MySQL?
Eine parametrisierte Abfrage (auch bekannt als vorbereitete Anweisung ) ist ein Mittel zum Vorkompilieren einer SQL-Anweisung, so dass Sie nur die "Parameter" (denken Sie "Variablen") angeben müssen müssen in die Anweisung eingefügt werden, damit sie ausgeführt werden kann. Es wird häufig verwendet, um SQL-Injection-Angriffe zu verhindern.
Sie können mehr darüber auf der PHP PDO-Seite lesen (PDO ist eine Datenbankabstraktionsschicht) ), obwohl Sie diese auch verwenden können, wenn Sie die mysqli-Datenbankschnittstelle verwenden (siehe vorbereiten < Dokumentation>).
Dies ist eine klare und prägnante Erklärung dessen, was es ist und wie es funktioniert. Wie und Warum die Parametrisierung verwenden
Entscheidend ist, dass der Server die Anfrage ohne Parameter vorverarbeitet, so dass er die Art der Anfrage kennt. So ist zum Beispiel eine SELECT-Abfrage nur eine SELECT-Abfrage und kann nicht durch einen Parameter (Anforderungsvariable) zu einer SELECT / DROP- oder einer anderen MySql-Injektion verkettet werden. Stattdessen sind die Injektionsdaten nur Stringdaten im Parameterfeld.
Eine parametrisierte Abfrage ist eine Abfrage, in der Platzhalter für Parameter verwendet werden und die Parameterwerte zur Ausführungszeit angegeben werden.
Warum parametrisierte Abfrage verwenden
Diese Anweisung ist eines der Merkmale des Datenbanksystems, in dem dieselbe SQL-Anweisung wiederholt mit hoher Effizienz ausgeführt wird. Die vorbereiteten Anweisungen sind eine Art des Templates und werden von der Anwendung mit verschiedenen Parametern verwendet. Referenzartikel
Das Datenbanksystem kann die gleiche SQL-Anweisung ausführen, ohne das Parsen, Kompilieren und Optimieren für dieselbe Art von SQL-Anweisung zu wiederholen.
Sie können vorbereitete Anweisungen in MySQL schreiben oder erstellen, aber dies ist kein effizienter Weg, da das binäre Protokoll durch eine vorbereitete Anweisungs-API besser ist.
Aber Sie können immer noch schreiben und selbst das erfordert keine andere Programmierung, die Sie direkt in SQL schreiben können. Sie können eine vorbereitete Anweisung für das MySQL-Client-Programm verwenden. Sie können auch eine vorbereitete Anweisung in einer gespeicherten Prozedur für den dynamischen SQL-Ansatz verwenden.
Erstellen Sie eine vorbereitete Anweisung in MySQL: Verweis ist von diesem Artikel < a>
%Vor%Sie können PHP-Code verwenden, um vorbereitete Anweisungen über ihre API zu verwalten oder auf der Ebene von JDBC zu verwalten.