Duplicar posible:
Php PDO::bindParam data types.. how does it work?PDO: ¿Cuál es el propósito de usar data_type durante el enlace?
decir, por ejemplo, que tengo la siguiente declaración preparada:
$sth = $dbh->prepare('SELECT `name` FROM `user` WHERE `user_id` = :user_id');
que podría enlazar el parámetro user_id así:
$sth->bindValue(':user_id', $user_id_value);
Y aún estaría a salvo de las inyecciones de SQL.
Sin embargo, bindValue() también es un parámetro opcional llamado data_type, que le permite establecer un tipo de datos explícito. Ejemplo:
$sth->bindValue(':user_id', $user_id_value, PDO::PARAM_INT);
Eso me permite afirmar que user_id será un número entero.
Mi pregunta es: ¿Por qué usar el parámetro data_type en bindValue si está seguro contra las inyecciones de SQL con o sin él? ¿Está ahí para forzar la integridad de los datos? Si está validando sus datos de antemano, ¿necesita preocuparse por su uso? ¿Hay algún otro beneficio al usarlo que no haya pensado?
¿Qué parte de la pregunta: ¿No respondes? Todavía no veo ninguna argumentación aparte de "es algo bueno", que no es una explicación técnica en absoluto – zerkms
erm ... preguntaste si está ahí para forzar la integridad del tipo de datos. si no quieres usarlo, no. Lo uso porque me gusta esa capa adicional de aplicación. - cada pequeño ayuda [como dicen los usuarios de meth] –
No soy un OP. Pero aún así, "porque me gusta esa capa adicional de cumplimiento", no es una explicación técnica. ¿Puedes dar algún ejemplo en el que esa capa adicional de aplicación pueda ser realmente útil, y hay diferencia con y sin especificación de tipo explícita? – zerkms