[PHP-users 35748] Re: PostgreSQL配列型カラムへのプリペアドステートメント実行

Kiyotaka sumii quatrecentsept @ tsunukoraf.net
2012年 11月 7日 (水) 15:25:14 JST


こんにちは

この場合、execute時に$2に代入する値を、phpの配列ではなく、
postgresqlが理解できる配列の型にしてあげる必要があります。

具体的には array("abc","def") のところが、
{abc,def}
という文字列になります。

ex.
$pg_array = "{abc,def}";
pg_execute($dbconn, $stmtname, array(1,$pg_array));


On 2012/11/07, at 14:09, おさ <osa @ osa-p.net> wrote:

> こんにちは、おさです。
> 
> PostgreSQLの配列型カラムへデータを投入したいのですが、
> エラーになってしまい困っています。
> 
> id bigint
> data text[]
> というカラム定義のテーブルがあり
> insert into tbl (id,data)values($1,$2)
> というプリペアドステートメントを定義しました。
> 
> そこで
> pg_execute($dbconn, $stmtname, array(1, array("abc","def")))
> を実行したのですが、PostgreSQL側で
> ERROR:  配列値は"["か次元情報から始まらなければなりません
> というエラーが出ます。
> pg_executeに直接配列は渡せないのでしょうか?
> なにか正しいやり方があるのが、自前でなんとしないといけないのでしょうか?
> 
> 環境はPHP5.4.8、PostgreSQL9.2.1です。
> 
> --
> +-----------------------------------------------------------------------+
> HANDLE:おさ
> EMAIL :osa @ osa-p.net twitter:osapon URL:http://www.osa-p.net/
> +-----------------------------------------------------------------------+
> _______________________________________________
> PHP-users mailing list  PHP-users @ php.gr.jp
> http://ml.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://oldwww.php.gr.jp/php/novice.php3



PHP-users メーリングリストの案内