web-dev-qa-db-fra.com

Véritable chaîne d'échappement et PDO

J'utilise PDO après avoir migré hors de la bibliothèque mysql. Qu'est-ce que j'utilise à la place de l'ancien real_escape_string une fonction?

J'ai besoin d'échapper aux guillemets simples pour qu'ils entrent dans ma base de données et je pense qu'il y a peut-être une meilleure façon de gérer cela sans ajouter de barres obliques (slash) à toutes mes chaînes. Que devrais-je utiliser?

79
John

Vous devriez utiliser PDO Prepare

Du lien:

L'appel de PDO :: prepare () et PDOStatement :: execute () pour des instructions qui seront émises plusieurs fois avec différentes valeurs de paramètre optimise les performances de votre application en permettant au pilote de négocier la mise en cache côté client et/ou serveur du plan de requête méta-informations, et aident à prévenir les attaques par injection SQL en éliminant la nécessité de citer manuellement les paramètres .

40
SteD

PDO offre une alternative conçue pour remplacer mysql_escape_string () par le PDO :: quote () méthode.

Voici un extrait du site Web PHP:

<?php
    $conn = new PDO('sqlite:/home/lynn/music.sql3');

    /* Simple string */
    $string = 'Nice';
    print "Unquoted string: $string\n";
    print "Quoted string: " . $conn->quote($string) . "\n";
?>

Le code ci-dessus affichera:

Unquoted string: Nice
Quoted string: 'Nice'
33
PowerAktar

Utilisez des déclarations préparées. Celles-ci séparent les données et la syntaxe, ce qui évite d'avoir à échapper des données MySQL. Voir par exemple ce tutoriel .

4
Piskvor