正しく動作するpostgres関数を持っている場合(以下同様);配列をURLパラメータとしてエンコードし、PHPで抽出し、関数パラメータとしてPostgresに渡すには
package."func_SetValues"(id integer, values integer[])
DECLARE
i integer;
BEGIN
FOR i IN 1..array_upper(values, 1)
LOOP
EXECUTE package."func_DoStuff"(id, values[i]);
END LOOP;
END
LANGUAGE 'plpgsql' VOLATILE
そして、値を受け取り、URLエンコードされたパラメータとして使用するこの関数を呼び出すPHPスクリプトのdoStuff.php。 PHPスクリプトをテストするには
$dbconn = pg_connect("host=192.168.1.222 port=5432 dbname=betya user=betya_user password=bettyboo")
or die('Could not connect: ' . pg_last_error());
$query = 'SELECT * FROM package."func_SetValues"($1, $2)';
$result=pg_prepare($dbconn, "qy", $query);
$paramater1=$_REQUEST['id'];
$paramater2=$_REQUEST['arr'];
$result=pg_execute($dbconn, "qy", array($paramater1, $paramater2));
while($e=pg_fetch_assoc($result))
$output[]=$e;
print(json_encode($output));
pg_free_result($result);
pg_close($dbconn);
、以下のURLが正しくPHPは「リクエスト」の値をすることができますし、それが理解離れでのpostgresに渡すことができるように配列「ARR」をエンコードするのでしょうか?または、pg_executeコマンドに正しく渡すために、スクリプトにさらに機能が必要ですか?
http://192.168.1.50/server/doStuff.php?id=1790&arr[]=1788&arr[]=1790&arr[]=1805