Как определить тип переменной в PDOStatement::bindValue()?

Метод 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, я не совсем понимаю, как это будет работать на других СУБД) знает, как преобразовать эту строку обратно в целое число перед ее использованием.

Какие случаи использования, когда это будет иметь значение для связанных типизированных параметров по сравнению со строками?

9
задан Adrian Cid Almaguer 12 March 2015 в 18:12
поделиться