Метод PDOStatement::bindValue() предлагает способ указать тип связанной переменной:
PDOStatement::bindValue ( $parameter , $value [, $data_type = PDO:: PARAM_STR ] )
Интересно, какова цель указания типа данных, в то время как при сбросе по умолчанию (PARAM_STR
) в конце концов БД все равно приведет значение к нужному типу, прежде чем его использовать?
Например, если эти запросы заданы через поле INTEGER
:
INSERT INTO table (integerField) VALUES (?) ;
SELECT * FROM table WHERE integerField = ? ;
И вы привязываете целое число в PHP, PDO по умолчанию привяжет его как строку, что эквивалентно:
INSERT INTO table (integerField) VALUES ("1") ;
SELECT * FROM table WHERE integerField = "1" ;
Это будет работать безупречно, потому что СУБД SQL (по крайней мере MySQL, я не совсем понимаю, как это будет работать на других СУБД) знает, как преобразовать эту строку обратно в целое число перед ее использованием.
Какие случаи использования, когда это будет иметь значение для связанных типизированных параметров по сравнению со строками?