2010-12-13 10 views
2

unixODBC経由でPHPを使用してAS400/DB2にアクセスします
しかし、私のAS400のフィールド名の名前は "££.." )
そして、私は私のPHPページunixODBC + PHP無効な文字列またはバッファ長エラーメッセージ

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

からSQLクエリを起動しようとしたとき、誰かが手がかりを持っている場合は、私はいつも同じエラーメッセージ

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ではわかりませんが、見つけて試してみるのはあまり難しくありません。それでも動作しない場合は、文字列の16進値で文字を表現する方法があるかどうかを確認してください。 'hello \ x0A \ x0Dthere'のように 'hello'と 'there'が改行で区切られています。あなたは£の値を見つける必要があるかもしれません。

関連する問題