¿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?