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

おさ osa @ osa-p.net
2012年 11月 7日 (水) 15:56:44 JST


ありがとうございます。

やっぱり自前で変換してやらないといけないんですね。
配列の要素をクォーテーションで括って、カンマ区切り波括弧括りにして、
無事投入できました。
まだエスケープ処理からは逃れられないのですね。


2012年11月7日 15:25 Kiyotaka sumii <quatrecentsept @ tsunukoraf.net>:
> こんにちは
>
> この場合、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 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



-- 
+-----------------------------------------------------------------------+
 HANDLE:おさ
 EMAIL :osa @ osa-p.net twitter:osapon URL:http://www.osa-p.net/
+-----------------------------------------------------------------------+


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