2009-09-21 21 views
30

Me dijeron hoy que realmente debería estar usando declaraciones de PDO y preparadas 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.Declaraciones preparadas de PHP PDO

Respuesta

31

Hay dos grandes ejemplos en la documentación pdo::prepare().

Los he incluido aquí y los he simplificado un poco.

Este usa los 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(); 
+1

en sus 2 ejemplos, ¿es 1 mejor que el otro? – JasonDavis

+0

Para consultas simples,? está bien. Pero tenga en cuenta que las declaraciones preparadas agregarán una cita alrededor de cada valor. En el segundo ejemplo, puede indicar que un valor es un número y el otro valor es una cadena. (aunque no se muestra aquí) –

+0

Simplemente depende de lo que quieras hacer con él ... Si quieres usar el mismo valor más de una vez, entonces debes usar parámetros con nombre. Esto se debe a que si usa? 'S, simplemente los inserta en el orden en que aparecen. Si usó los parámetros nombrados, puede usarlos más de una vez. Los? Son solo una versión más condensada para consultas más simples. Uno no tiene una ventaja sobre el otro de ninguna otra manera. – BraedenP

Cuestiones relacionadas