web-dev-qa-db-fra.com

PHP instructions préparées par PDO

On m'a dit aujourd'hui que je devrais vraiment utiliser PDO et préparer des déclarations dans ma demande. Bien que je comprenne les avantages, j'ai du mal à comprendre comment je les implémente dans mon flux de travail. Outre le fait qu'il rend le code beaucoup plus propre, dois-je avoir une classe de base de données spécifique qui héberge toutes mes instructions préparées ou dois-je en créer une à chaque fois que je veux exécuter une requête? Je trouve très difficile de comprendre quand je dois utiliser une requête PDO standard et quand je dois utiliser une instruction préparée. Tous les exemples, conseils ou liens de tutoriel seraient grandement appréciés.

31
Hanpan

Il existe deux excellents exemples sur la documentation pdo :: prepare () .

Je les ai inclus ici et les ai simplifiés un peu.

Celui-ci utilise ? paramètres. $dbh est essentiellement un objet PDO. Et ce que vous faites, c'est de mettre les valeurs 150 et 'red' dans le premier et le deuxième point d'interrogation respectivement.

/* Execute a prepared statement by passing an array of values */
$sth = $dbh->prepare('SELECT name, colour, calories
                      FROM fruit
                      WHERE calories < ? AND colour = ?');

$sth->execute(array(150, 'red'));

$red = $sth->fetchAll();

Celui-ci utilise des paramètres nommés et est un peu plus complexe.

/* Execute a prepared statement by passing an array of values */
$sql = 'SELECT name, colour, calories
        FROM fruit
        WHERE calories < :calories AND colour = :colour';

$sth = $dbh->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
$sth->execute(array(':calories' => 150, ':colour' => 'red'));

$red = $sth->fetchAll();
32
Ólafur Waage