为了账号安全,请及时绑定邮箱和手机立即绑定

传递给PDOStatement :: bindParam()的参数名称的前导冒号是可选的吗?

传递给PDOStatement :: bindParam()的参数名称的前导冒号是可选的吗?

PHP
月关宝盒 2019-09-03 20:20:08
将表单的命名参数传递:name给时PDOStatement::bindParam(),无论是否使用了前导冒号,它似乎都有效。即:这个:$statement->bindParam(':name', $var);或这个:$statement->bindParam('name', $var);似乎工作。这是文档 PDOStatement::bindParam()参数参数标识符。对于使用命名占位符的预准备语句,这将是以下形式的参数名称:name。对于使用问号占位符的预准备语句,这将是参数的1索引位置。这是否意味着结肠可以被取消?
查看完整描述

3 回答

?
慕标5832272

TA贡献1966条经验 获得超4个赞

不,因为文档没有提到这一点,我认为可以安全地假设这种行为不是官方支持的,不应该依赖。


但是,它实际上确实有效(至少在PHP 5.3.24中) - 如果缺少冒号,将在内部添加一个冒号(参见ext/pdo/pdo_stmt.c:363PHP 5.3.24源代码)。


查看完整回答
反对 回复 2019-09-03
?
富国沪深

TA贡献1790条经验 获得超9个赞

我会说SQL表达式中需要冒号,但是当你用它命名(标识)名称时则不需要冒号bindParam。PDO函数在这里可能不那么严格,因为它可以定义它自己的接口来命名参数。

查看完整回答
反对 回复 2019-09-03
?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

我想知道同样的问题。我的猜测是:用于严格区分colName和sql关键字。很高兴知道PDO将修复缺失:在绑定中。我将接受hakre的建议并保留:在sql语句中

查看完整回答
反对 回复 2019-09-03
  • 3 回答
  • 0 关注
  • 495 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信