unixODBC + PHP,无效的字符串或缓冲区长度错误消息

时间:2010-12-13 11:14:24

标签: php ibm-midrange unixodbc

我通过unixODBC使用PHP访问AS400 / DB2 但我的AS400的一些字段名称以“£..”命名(不能更改)
当我尝试从我的PHP页面启动SQL查询时

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

我总是收到相同的错误消息

  

SQL错误:[unixODBC] [IBM] [System i Access ODBC Driver]无效的字符串或缓冲区长度。,SQLExecDirect中的SQL状态S1090

如果有人有线索。

2 个答案:

答案 0 :(得分:0)

DB2应该有一些方法来封装标识符。有些数据库使用双引号

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

mySQL使用反引号。不确定DB2,但不应该太难找到并尝试。如果这不起作用,请查看是否有一种方法可以通过字符串中的十六进制值表示字符。就像'hello \ x0A \ x0Dthere'一样,将'hello'和'there'分隔为换行符。您可能只需要找到£的值。

答案 1 :(得分:0)

尝试在执行查询之前添加此语句:

setlocale(LC_CTYPE, 'en_US');

有关该问题的更详细说明: http://bugs.centos.org/view.php?id=3187