Beim Übergang von mysql_* zu PDO kann es zu einem Dilemma kommen, da kein direktes Äquivalent zu mysql_real_escape_string vorhanden ist.
Kein direktes Äquivalent
Technisch gesehen gibt es PDO::quote(), aber seine Verwendung ist begrenzt. Die wahre Lösung liegt in der korrekten Implementierung vorbereiteter Anweisungen.
Vorbereitete Anweisungen schützen vor Injektionen
PDO schützt bei Verwendung mit vorbereiteten Anweisungen von Natur aus vor MySQL-Injektionen ohne Bedarf an zusätzlicher Flucht. Vorbereitete Anweisungen binden Eingabeparameter an Platzhalter und verhindern so, dass böswillige Eingaben als SQL-Befehle interpretiert werden.
Beispiel: Verwendung von vorbereiteten Anweisungen in PDO
Der folgende Code demonstriert eine sichere Datenbank Abfrage mit vorbereiteten Anweisungen:
<code class="php"><?php $db = new \PDO("mysql:host=localhost;dbname=xxx;charset=utf8", "xxx", "xxx", [ PDO::ATTR_EMULATE_PREPARES => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION ]); if ($_POST && isset($_POST['color'])) { $stmt = $db->prepare("SELECT id, name, color FROM Cars WHERE color = ?"); $stmt->execute(array($_POST['color'])); $cars = $stmt->fetchAll(\PDO::FETCH_ASSOC); var_dump($cars); } ?></code>
Vorteile vorbereiteter Anweisungen
Zusätzliche Überlegungen
Fazit
Vorbereitete Anweisungen in PDO bieten einen robusten und sicheren Mechanismus für Datenbankabfragen, ohne dass Funktionen wie mysql_real_escape_string erforderlich sind. Durch diesen Ansatz können Sie SQL-Injections effektiv verhindern und die Integrität Ihrer Daten wahren.
Das obige ist der detaillierte Inhalt vonWie ersetzt man mysql_real_escape_string in PDO: Vorbereitete Anweisungen als Lösung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!