Heim > Datenbank > MySQL-Tutorial > Hauptteil

Wie ersetzt man mysql_real_escape_string in PDO: Vorbereitete Anweisungen als Lösung?

DDD
Freigeben: 2024-10-26 05:05:02
Original
770 Leute haben es durchsucht

How to Replace mysql_real_escape_string in PDO: Prepared Statements as the Solution?

Ersetzen von mysql_real_escape_string in PDO

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

Vorteile vorbereiteter Anweisungen

  • Automatisches Escapen von Eingaben
  • Verhinderung von SQL-Injections
  • Verbesserte Sicherheit und Leistung

Zusätzliche Überlegungen

  • Verwenden Sie charset=utf8 im DSN-Attribut für zusätzliche Sicherheit.
  • Aktivieren Sie PDO-Ausnahmen (PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION) für die Fehlerbehandlung.
  • Erwägen Sie zusätzliche Maßnahmen, wenn Sie veraltete MySQL-Versionen (MySQL < 5.3.6) verwenden.

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!

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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage