unixODBC + PHP, сообщение об ошибке неверной строки или длины буфера - PullRequest
2 голосов
/ 13 декабря 2010

Я получаю доступ к AS400 / DB2 с PHP через unixODBC
Но некоторые имена полей моего AS400 названы "££ .." (это нельзя изменить)
И когда я попытался запустить SQL-запрос со своей страницы PHP

select * from LIBNAME.TABLE where ££FIELD like 'test%'

Я всегда получаю одно и то же сообщение об ошибке

Ошибка SQL: [unixODBC] [IBM] [Драйвер ODBC для System i Access] Недопустимая длина строки или буфера. Состояние SQL S1090 в SQLExecDirect

Если у кого-то есть подсказка.

Ответы [ 2 ]

0 голосов
/ 03 июня 2012

Попробуйте добавить этот оператор перед выполнением запроса:

setlocale(LC_CTYPE, 'en_US');

Для более подробного описания проблемы: http://bugs.centos.org/view.php?id=3187

0 голосов
/ 25 февраля 2011

В DB2 должен быть какой-то способ включения идентификаторов.В некоторых базах данных используются двойные кавычки

select * from "tableID" where "fieldID" like 'blah%'

В MySQL используются обратные ссылки.Не уверен, что с DB2, но не должно быть слишком сложно найти и попробовать.Если это не сработает, посмотрите, есть ли способ представить символы шестнадцатеричным значением в строке.Как 'hello \ x0A \ x0Dthere' будут слова 'hello' и 'there', разделенные переводом строки.Возможно, вам просто нужно найти значение за £.

...