在 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() 中使用显式数据类型有啥意义?的主要内容,如果未能解决你的问题,请参考以下文章

亚信科技:新业务成高速增长源动力,吹响全栈式数智化转型号角

在 C 系列语言中使用显式大小类型的缺点或权衡

在 terraform 模块中显式使用提供程序

使用显式等待在 Python 中使用 Selenium 弹出“接受 Cookie”

如何在 Python 中使用 Selenium 设置动态显式等待?

如何在 IBM (HLASM) 中使用显式寻址