[pgsql-jp: 25537] bytea and multi-byte enabled PostgreSQL?
Yasuo Ohgaki
yohgaki @ yahoo.co.jp
2002年 4月 5日 (金) 09:58:37 JST
大垣です。
PHP4.2.0-dev (CVS version) と PostgreSQL 7.2.1を使っ
ています。
PQescapeBytea()関数がPostgreSQL7.2のlibpqからサポート
されています。PHP4.2.0からこの関数がpg_escape_bytea()
としてサポートされますが、テストしていて以下の様なエラーに
あたりました。
Warning: pg_query() query failed: ERROR: Invalid EUC_JP character
sequence found (0xf75c)
in escape.inc on line 40
Scriptはphp.gifをファイル関数で読み込みテーブルに挿入し
ようとしています。
$fp = fopen('php.gif','r');
$image = fread($fp, filesize('php.gif');
$escaped = pg_escape_bytea($image);
$sql = "INSERT INTO php_pgsql_test (num, bin) VALUES (1, '".$escaped."');"
テーブル定義は以下の通りです。
test=# \d php_pgsql_test
Table "php_pgsql_test"
Column | Type | Modifiers
--------+---------+-----------
num | integer |
str | text |
bin | bytea |
バイナリデータをEUC-JPテキストとして取り扱っている為、上
記のエラーが発生していると思います。
--enable-multibyteでビルドしたPostgreSQLでマルチバイ
ト文字使うように設定した場合、bytea型にPQescapeBytea()
でエスケープしたデータを利用するには特別なコマンド/設定
などが必要なのでしょうか?
宜しくお願いします。
--
Yasuo Ohgaki
__________________________________________________
Do You Yahoo!?
Yahoo! BB is Broadband by Yahoo! http://bb.yahoo.co.jp/
pgsql-jp メーリングリストの案内