Я только что обновил свой сервер с 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]: недопустимый номер параметра: число связанных переменных не соответствует количеству токенов
Кажется, работаетправильно, если я удалю символ N перед параметром.Тем не менее, у меня есть тысячи подобных заявлений, и было бы трудно убрать их.Я предпочел бы выяснить, почему это происходит, и исправить это.
Есть идеи, как заставить эту работу работать?
Спасибо
Позже отредактировать: благодаря тому, что все еще ниже, я нашелиспользование неназванных параметров (вопросительный знак) работает.Но это все еще оставляет меня с большим количеством утверждений.
Так что это работает:
INSERT INTO IPs (IP, PosterId, Note, DateAdded, Status, IsClass)
VALUES (?, ?, N?, GETUTCDATE(), ?, ?)