2

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

誰かが手がかりを持っている場合。

4

2 に答える 2

0

DB2 には、識別子を囲む何らかの方法が必要です。一部のデータベースでは二重引用符が使用されています

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

MySQL はバックティックを使用します。DB2 についてはよくわかりませんが、見つけて試すのは難しくありません。それでもうまくいかない場合は、文字列内の 16 進値で文字を表す方法があるかどうかを確認してください。「hello\x0A\x0Dthere」のように、「hello」と「there」が改行で区切られます。£ の値を見つける必要があるだけかもしれません。

于 2011-02-25T19:15:39.873 に答える
0

クエリの実行前に次のステートメントを追加してみてください。

setlocale(LC_CTYPE, 'en_US');

問題の詳細な説明: http://bugs.centos.org/view.php?id=3187

于 2012-06-03T09:07:52.597 に答える