¿Cómo definir el tipo de variable en PDOStatement :: bindValue ()?

LosPDOStatement :: bindValue ()l método @ ofrece una forma de especificar el tipo de variable vinculada:

PDOStatement :: bindValue ($ parámetro, $ valor [, $ data_type = PDO :: PARAM_STR])

Me pregunto cuál es el propósito de especificar el tipo de datos, mientras que cuando se deja como predeterminado PARAM_STR) eventualmente la base de datos arrojará el valor al tipo apropiado antes de usarlo?

Por ejemplo, si tiene estas consultas sobre unINTEGER campo:

INSERT INTO table (integerField) VALUES (?) ;
SELECT * FROM table WHERE integerField = ?  ;

Y usted vincula un número entero en PHP, PDO lo vinculará por defecto como una cadena, que es equivalente a:

INSERT INTO table (integerField) VALUES ("1") ;
SELECT * FROM table WHERE integerField = "1"  ;

Eso funcionará sin problemas, porque la base de datos SQL (al menos MySQL, no estoy realmente consciente de cómo funcionaría en otros RDBMS) sabe cómo convertir la cadena de nuevo a un entero antes de usarla.

Cuáles son los casos de uso en los que marcaría la diferencia entre los parámetros tipados vinculados y las cadenas?

Respuestas a la pregunta(3)

Su respuesta a la pregunta