MS SQL, PDO, ошибка при вставке строки XML: общая ошибка: 102 Неверный синтаксис рядом с ' - PullRequest
0 голосов
/ 18 апреля 2020

Я пытаюсь вставить строку XML в базу данных MS SQL из PHP. Я получаю:

SQLSTATE [HY000]: общая ошибка: 102 Неверный синтаксис рядом с '(следует фрагмент из xml).

Подготовленный оператор:

$stmt = $this->db->prepare('
   INSERT INTO [System_XmlExchangeImport] ([Create_ID], [ImportCode], [InputXml]) 
   VALUES (?, ?, ?);
');
$result = $stmt->execute(array('ABCDEFGHKAJSDKLJ', $code, $xml));

$xml является допустимой XML строкой. Тот же XML можно вставить OK, используя идентичный оператор в клиентском приложении SQL (sqlectron)

Я понятия не имею, что делать дальше.

1 Ответ

0 голосов
/ 27 апреля 2020

Проблема была вызвана кодированием. XML был закодирован с помощью Windows -1250, но соединение с базой данных было открыто с кодировкой UTF-8:

$connString = "dblib:version=7.0;host=$dbIp:$dbPort;dbname=$dbName;charset=UTF-8;";
$this->db = new PDO($connString, $dbUser, $dbPass);

После изменения UTF-8 на WINDOWS-1250 в DSN ($connString ):

$connString = "dblib:version=7.0;host=$dbIp:$dbPort;dbname=$dbName;charset=WINDOWS-1250;";

XML может быть вставлен без проблем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...