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