[PHP-users 30606] Re: PEAR MDB2.phpでPostgresqlにプレイスホルダをつかって数字のinsert
KOYAMA Tetsuji
koyama @ hoge.org
2006年 10月 26日 (木) 22:50:53 JST
小山です。
On 10/26/06, MAO <mao @ nextyle.com> wrote:
> データのinsertなのですが、プレイスホルダを利用して、
> integerのフィールドにデータを登録しようとすると、
> "fld_int" is of type integer but expression is of type text
> と、intgerのフィールドにテキスト入れてるよ。と怒られます。
> DB.phpの命令をMDB.phpに書き換えただけなのですが、
> 何かお作法を追加しないといけないのでしょうか?
MDB2_Driver_pgsql::prepare() を見てみたところ、
PHP4 の環境では pg_prepare() 関数がないので prepare メソッドの第二引数
に型情報を渡すのが必須のようです。
> $sth = $dbh->prepare($sql);
ここを
$sth = $dbh->prepare($sql, array('integer'));
にするとおそらく動作すると思います。
ちなみに PHP5 の環境では、pg_prepare() がよきに計らってくれるので
型情報を渡す必要はありません。:-)
--
小山哲志@ビート・クラフト
koyama @ beatcraft.com
koyama @ hoge.org
PHP-users メーリングリストの案内