【发布时间】:2011-11-11 16:58:00
【问题描述】:
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 上工作)知道如何在使用之前将字符串转换回整数。
在哪些用例中绑定类型参数和字符串会有所不同?
【问题讨论】:
标签: php sql pdo pdostatement bindvalue