我刚刚将我的服务器从 php 5.2 升级到 5.3.3,我在 PDO 中遇到了一个奇怪的错误(使用 DBLIB)。
我正在连接到 SQL Server 2005。我遇到错误出现在任何以“N”字母作为参数前缀的语句中(告诉 SQL Server 这是一个 unicode 字符串)。
查询如下所示:
INSERT INTO IPs (IP, PosterId, Note, DateAdded, Status, IsClass)
VALUES (:ip, :posterid, N:note, GETUTCDATE(), :status, :isclass)
用于在旧设置上正常工作,新设置抛出异常:
SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens
如果我删除参数前面的 N 字符,似乎可以正常工作。但是,我有成千上万这样的陈述,删除它会很痛苦。我宁愿找出为什么会发生这种情况并解决它。
知道如何进行这项工作吗?
谢谢
稍后编辑:感谢仍然站在下面,我发现使用非命名参数(问号)有效。但它仍然让我改变了很多陈述。
所以这有效:
INSERT INTO IPs (IP, PosterId, Note, DateAdded, Status, IsClass)
VALUES (?, ?, N?, GETUTCDATE(), ?, ?)