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,我真的不知道这将如何在其他 RDBMS 上工作)知道如何在使用之前将字符串转换回整数。
在哪些用例中,绑定类型参数与字符串会有所不同?