[PHP-users 5864] 特定の文字で挿入・更新エラー(PEAR DB.php)
Yusuke Gunji
php-users@php.gr.jp
Mon, 04 Mar 2002 17:07:00 +0900
グンジと申します。いつもお世話になっています。
現在、DBにpostgresを使用して、Webシステムを
作成しているのですが、データをDBに挿入するところで
つまづいています
【環境】
・OS Redhat6.2
・Web Apache 1.3.22
・PHP PHP 4.1.2
・DB postgreSQL 7.2
【インストール設定】
postgreSQL
./configure --enable-multibyte=EUC-JP
PHP
./configure \
--with-apxs=/usr/local/apache/bin/apxs \
--with-pgsql=/usr/local/pgsql \
--enable-trans-sid \
--with-config-file-path=/usr/local/lib/php \
--with-mcrypt \
--enable-mbstring \
--enable-mbstr-enc-trans
【前提】
・PHPからDBへの接続はPEARのDB.phpクラスを使用。
DSNは DB::connect("pgsql://username@localhost/dbname")
DBには正常に接続されている。
・全てHTMLとして出力する場合はEUC-JPをメタに出力している。
<meta http-equiv="content-type" content="text/html; charset=euc-jp">
・postgresの起動オプションは
postmaster -S -i
・mbstring関係の設定は下記の通り
http-input-encoding-translation enabled
mbstring.detect_order auto
mbstring.http_input auto
mbstring.http_output EUC-JP
mbstring.internal_encoding EUC-JP
mbstring.substitute_character no value
【現象】
・PHP上で、"株"という文字を入力して挿入/更新すると、エラーとなる
他の文字列は今のところ問題ない。
・コンソール上から直接psqlでデータベースに接続し、
insert into t1 (v1) values ('株式会社');
とやると正常に登録される。
・pg_xxxxxを使用すると問題なくInsert等できる。
現状ですと、株 以外の文字列でエラーが起こっている様子はありません。
文字化け以前の問題なので、postgresへデータが渡されるあたりに
問題があるのでしょうか?
汎用的なクラスを使用し、DBとのやりとりを行おうと考えているので、
出来ればDB.phpで行きたいと考えています。
回避方法、対処方法などご存じの方がいらっしゃいましたら
教えていただけませんでしょうか?
よろしくお願いいたします。
--
Yusuke Gunji
+ cross@gun-z.net
+ http://www.gun-z.net (Haven't done yet)