【问题标题】:PDO Invalid parameter number - parameters in commentsPDO 参数号无效 - 注释中的参数
【发布时间】:2012-07-10 14:17:42
【问题描述】:

今天我遇到了一个以前从未见过的错误(在 PDO 中),但仔细想想就会发现。

我收到以下错误: Warning: PDOStatement::execute() [pdostatement.execute]: SQLSTATE[HY093]: Invalid parameter number:

我使用的查询类似于以下内容:

SELECT
    x
FROM
    y
WHERE
    -- CHECKING IF X = :Z --
    x = :y
AND
    1 = 2

显然我有更多的参数和更长的查询。

为什么会出现这个错误?

【问题讨论】:

  • 我会将your nearly identical question 与这个结合起来。只需在此处说明同样适用于?
  • 查看我对另一个问题的评论:它们会导致不同的错误,并且应该 - 以我的拙见 - 单独的问题以简化搜索。
  • 为什么关闭?我自己回答了这个问题,这对于将来的参考可能很重要......

标签: php sql pdo


【解决方案1】:

解决方案很明显:PDO 不理会 cmets 并尝试绑定不存在的变量 ':Z'。您不能在 PDO 的 cmets 中使用参数(除非您绑定它们)。

There's a similar bug using question marks in comments.

【讨论】:

  • 是的,听起来很合理,因为 PDO 会查找占位符,无论它是否包含在评论中。
  • 等等,你是不是把自己的问题贴出来直接回答了?
  • 是的,因为这些知识很有用。它会为我节省半个小时来搜索未绑定的参数。
  • 谢谢。我没有意识到这一点,它可能会在某个时候咬我。
  • 如果还没有,您应该将其报告为PHP bug
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-09
  • 2018-12-01
  • 1970-01-01
  • 2016-05-12
  • 2016-03-13
相关资源
最近更新 更多