unixODBC + PHP,无效的字符串或缓冲区长度错误消息
Posted
技术标签:
【中文标题】unixODBC + PHP,无效的字符串或缓冲区长度错误消息【英文标题】:unixODBC + PHP , Invalid string or buffer length error message 【发布时间】:2010-12-13 11:14:23 【问题描述】:我通过 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
如果有人有线索。
【问题讨论】:
【参考方案1】:尝试在查询执行之前添加此语句:
setlocale(LC_CTYPE, 'en_US');
有关问题的更详细说明: http://bugs.centos.org/view.php?id=3187
【讨论】:
【参考方案2】:DB2 应该有某种封装标识符的方法。一些数据库使用双引号
select * from "tableID" where "fieldID" like 'blah%'
mysql 使用反引号。不确定是否使用 DB2,但应该不难发现和尝试。如果这不起作用,请查看是否有办法用字符串中的十六进制值表示字符。像 'hello\x0A\x0Dthere' 将是单词 'hello' 和 'there' 由换行符分隔。您可能只需要找到 £ 的价值。
【讨论】:
以上是关于unixODBC + PHP,无效的字符串或缓冲区长度错误消息的主要内容,如果未能解决你的问题,请参考以下文章
无效数据,块必须是字符串或缓冲区,而不是对象 - 离子和火力
Cordova:无效数据,块必须是字符串或缓冲区,而不是对象
[Access][Microsoft][ODBC 驱动程序管理器] 无效的字符串或缓冲区长度 Invalid string or buffer length
故意使 HTMLMediaElement 或 HTMLVideoElement 缓冲区无效或清除?