在 PDO::bindValue() 中使用显式数据类型有啥意义?

Posted

技术标签:

【中文标题】在 PDO::bindValue() 中使用显式数据类型有啥意义?【英文标题】:What's the point of using explicit data types in PDO::bindValue()?在 PDO::bindValue() 中使用显式数据类型有什么意义? 【发布时间】:2012-11-15 15:35:52 【问题描述】:

PDO::bindValue() 中使用显式数据类型有什么意义?

例如,在以下任一形式中,SQLSTATE[HY000]: General error: 1366 Incorrect integer value: 'a'

$pdos->bindValue(':Value_For_An_Int_Col', 'a');//default arg for the third and opt par is  PDO::PARAM_INT

$pdos->bindValue(':Value_For_An_Int_Col', 'a', PDO::PARAM_INT);

【问题讨论】:

【参考方案1】:

当你需要类似的东西时

SELECT * FROM ... LIMIT :intValues

避免将值包含在引号内,引发 SQL 语法错误

【讨论】:

这个答案是错误的。即使绑定字符串,也不需要引号。 pdo 会插入带引号的参数,限制不起作用 为了绝对确定,我测试了它。不,它不会插入带引号的参数。这可能是版本问题吗?你过去可能是对的,尽管我不这么认为。更详细一点:您不需要在 PDO::bindValue() 中显式指定数据类型,它就可以很好地处理字符串和整数参数。

以上是关于在 PDO::bindValue() 中使用显式数据类型有啥意义?的主要内容,如果未能解决你的问题,请参考以下文章