我剛剛將我的服務器從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