将表单的命名参数传递: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源代码)。
富国沪深
TA贡献1790条经验 获得超9个赞
我会说SQL表达式中需要冒号,但是当你用它命名(标识)名称时则不需要冒号bindParam
。PDO函数在这里可能不那么严格,因为它可以定义它自己的接口来命名参数。
qq_花开花谢_0
TA贡献1835条经验 获得超7个赞
我想知道同样的问题。我的猜测是:用于严格区分colName和sql关键字。很高兴知道PDO将修复缺失:在绑定中。我将接受hakre的建议并保留:在sql语句中
- 3 回答
- 0 关注
- 495 浏览
添加回答
举报
0/150
提交
取消