sentencias - Declaraciones preparadas de PHP PDO
sentencias preparadas php mysqli (1)
Hoy me dijeron que debería estar usando PDO y preparando declaraciones en mi aplicación. Aunque entiendo los beneficios, me cuesta entender cómo los implemento en mi flujo de trabajo. Aparte del hecho de que hace que el código sea mucho más limpio, ¿debería tener una clase de base de datos específica que contenga todas mis declaraciones preparadas o debería crear una cada vez que quiero ejecutar una consulta? Me resulta muy difícil entender cuándo debería usar una consulta PDO estándar y cuándo debería usar una declaración preparada. Cualquier ejemplo, consejos o enlaces de tutoriales sería muy apreciado.
Hay dos excelentes ejemplos en la documentación de pdo::prepare() .
Los he incluido aquí y los he simplificado un poco.
¿Este usa ?
parámetros. $dbh
es básicamente un objeto PDO. Y lo que está haciendo es poner los valores 150
y ''red''
en el primer y segundo signo de interrogación, respectivamente.
/* 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();
Éste usa parámetros con nombre y es un poco más complejo.
/* 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();