2010-12-13 1 views
2

Я получаю доступ к AS400/DB2 с помощью PHP через unixODBC
Но какое-то имя моего AS400 называется с именем «£ £ ..» (его нельзя изменить)
И когда я попытался запустить SQL запрос из моего PHP страницыunixODBC + PHP, сообщение об ошибке недопустимой строки или длины буфера

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

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

SQL error: [unixODBC][IBM][System i Access ODBC Driver]Invalid string or buffer length., SQL state S1090 in SQLExecDirect

Если кто-то есть ключ.

ответ

0

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

setlocale(LC_CTYPE, 'en_US'); 

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

0

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

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

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

Смежные вопросы