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

时间:2012-03-19 22:28:25

标签: php pdo

:name形式的命名参数传递给PDOStatement::bindParam()时,无论是否使用了前导冒号,它似乎都有效。

即。要么:

$statement->bindParam(':name', $var);

或者这个:

$statement->bindParam('name', $var);

似乎有效。

以下是PDOStatement::bindParam()

的文档
  

参数

     

参数标识符。对于使用named的预准备语句   占位符,这将是:name。形式的参数名称   准备好使用问号占位符的声明,这将是   1参数的索引位置。

这是否意味着结肠可以停止?

1 个答案:

答案 0 :(得分:28)

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

然而,它实际上确实起作用(至少在PHP 5.3.24中) - 如果参数缺失(see ext/pdo/pdo_stmt.c:363 in the PHP 5.3.24 source code),则会在内部添加冒号。