PDO参数化查询 - 重用命名占位符?

gam*_*000 21 php pdo

从本质上讲,我有一个值,我必须在我的SQL查询中调用几次.因此,是否可以在语句中重用相同的命名占位符,例如 SELECT :Param FROM Table WHERE Column = :Param,然后简单地使用bindValue(":Param"),并且两者都有值:Params?

gam*_*000 20

PDO :: prepare声明"你不能在预准备语句中两次使用同名的命名参数标记",所以我猜那是不行的.

  • 文档并不完全正确.如果'PDO :: ATTR_EMULATE_PREPARES`为'true`,则PDO*DOES*支持重用命名参数标记. (10认同)
  • 看起来有人更新了文档.它现在说"除非启用仿真模式,否则不能在预准备语句中多次使用同名的命名参数标记." (3认同)
  • 你是部分正确的.但是`SELECT:Param`是不可能的,因为你不能绑定表/列.查看http://stackoverflow.com/q/182287/ (2认同)

Jon*_*han 6

如果您设置PDO::ATTR_EMULATE_PREPARES = true.

例如$connection->setAttribute(PDO::ATTR_EMULATE_PREPARES, true);

如果您使用 Laravel,您可以将其设置optionsconfig/database.php. 例如PDO::ATTR_EMULATE_PREPARES => true