在PHP中处理Postgres输出函数参数
问题描述:
我有一个希望访问的Postgres数据库。我需要调用DB中存在的几个函数。我已经实现了与数据库的连接并运行查询。我也实现了调用我想要的功能。我的问题是,当一个Postgres函数有不止一个OUT参数,而不是返回数组我可以访问任何与胶印或与该行的名称,它,而不是返回一个字符串与两个OUT参数:在PHP中处理Postgres输出函数参数
$query = "Select pg_function('" . Getenv("REMOTE_ADDR") . "')";
$result = pg_query($query);
$line = pg_fetch_array($result, NULL, PGSQL_ASSOC);
var_dump($line);
什么var_dumb的回报是:
array
'ua_bl_session_request' => string '(c6787f5f2b2c885168162c8c8ffff220,8fe04393-c188-0e08-b710-a2ce89066768)' (length=71)
我当然可以分析该字符串,但有没有办法实现我想要的,我失踪了吗?
答
SELECT * FROM pg_function(REMOTE_ADDR);
答
也许您错误地使用了pg_fetch_array(),因为您应该在第二个参数中给出行号。例如:
// To get the first row (Rows are numbered from 0 upwards)
$line = pg_fetch_array($result, 0, PGSQL_ASSOC);
// To get the second row
$line = pg_fetch_array($result, 1, PGSQL_ASSOC);
但如果你知道你在做什么,你可以用regexp_split_to_table(),它是将一个字符串分解到使用POSIX正则表达式作为分隔符行的Posgtres字符串函数。例如:
$query = "select regexp_split_to_table(
pg_function('" . Getenv("REMOTE_ADDR") . "'), ','
)";
在你的情况下,它会分裂使用','
作为分隔符函数的结果。它应该返回两行的结果集,如下图所示:
c6787f5f2b2c885168162c8c8ffff220
8fe04393-c188-0e08-b710-a2ce89066768
'var_dumb' :-)我想在核心被纳入该别名。 – PeeHaa 2012-07-08 16:25:56