[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 メーリングリストの案内