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
30
A
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();
Cuestiones relacionadas
- 1. PDO, Mysql y declaraciones preparadas nativas
- 2. ¿La PDO siempre usa declaraciones preparadas emuladas de forma predeterminada?
- 3. ¿Qué tokens se pueden parametrizar en declaraciones preparadas con PDO?
- 4. Recursividad en declaraciones preparadas
- 5. mysql declaraciones preparadas permanentemente
- 6. ¿Cómo funcionan las declaraciones preparadas?
- 7. cuán seguras son las declaraciones preparadas por PDO
- 8. ¿Debería estar realmente usando PDO y declaraciones preparadas?
- 9. ¿Cuándo * no * usar declaraciones preparadas?
- 10. En PHP, ¿cómo protege PDO de las inyecciones de SQL? ¿Cómo funcionan las declaraciones preparadas?
- 11. Cierre de declaraciones preparadas
- 12. Para usar declaraciones preparadas por PHP para Postgres
- 13. Declaraciones preparadas en VB.NET
- 14. PHP PDO y MySQLi
- 15. ¿Puedo escribir declaraciones preparadas en php de procedimiento?
- 16. declaraciones preparadas de mysqli y mysqli_real_escape_string
- 17. Declaraciones preparadas MySQLi error reporting
- 18. Declaraciones preparadas y controladores JDBC
- 19. ¿Inyecciones SQL con declaraciones preparadas?
- 20. declaraciones preparadas sqlite - cómo depurar
- 21. ¿Qué son las declaraciones preparadas por el cliente?
- 22. ¿Puedo usar declaraciones preparadas reales para MySQL con PDO ahora? Hace
- 23. ¿Las declaraciones preparadas dinámicas son malas? (con php + mysqli)
- 24. PHP- insertando datos binarios en mysql usando declaraciones preparadas
- 25. ¿Por qué no puedes pasar las funciones de MYSQL a las declaraciones de PDO preparadas?
- 26. Desventajas de PDO (objetos de datos PHP)
- 27. Declaraciones preparadas MySQLi con el operador IN
- 28. Nombres de columnas variables usando declaraciones preparadas
- 29. Spring NamedParameterJDBCTemplate reutilización de las declaraciones preparadas
- 30. Declaraciones y transacciones preparadas de MySQL
en sus 2 ejemplos, ¿es 1 mejor que el otro? – JasonDavis
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í) –
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