我刚刚将我的服务器从php 5.2升级到5.3.3,并且在PDO(使用DBLIB)时出现了一个奇怪的错误。PDO FreeTDS错误
我正在连接到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]:无效的参数编号:绑定变量的数目不不匹配令牌数量
似乎正常工作,如果我删除参数前的N字符。但是,我有这样的成千上万的陈述,这将是一个痛苦的去除。我宁愿找出为什么发生这种情况并修复它。
任何想法如何使这项工作?
感谢
后来编辑:多亏了下面stillstanding,我发现,使用非命名参数(问号)的作品。但它仍然让我发表了很多陈述。
所以此工程:
INSERT INTO IPs (IP, PosterId, Note, DateAdded, Status, IsClass)
VALUES (?, ?, N?, GETUTCDATE(), ?, ?)
您可能会更好地使用问号参数代替命名参数。 The:搞砸了PHP对named参数的解释。 – stillstanding 2010-10-11 15:55:50