2012-07-08 4 views
0

액세스하려는 Postgres 데이터베이스가 있습니다. DB에있는 여러 함수를 호출해야합니다. 데이터베이스에 연결하고 쿼리를 실행했습니다. 나는 또한 내가 원하는 기능을 호출하기 위해 노력했다. 내 문제는 포스트 그레스 기능이 하나 개 이상의 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) 

하지만 내가 원하는 내가 그것을 놓치고 무엇을 달성하는 방법은 무엇입니까?

+0

'var_dumb' 내가 그 별명이 핵심에 통합하고자 :-). – PeeHaa

답변

1
SELECT * FROM pg_function(REMOTE_ADDR); 
1

두 번째 매개 변수에 행 번호를 지정해야하므로 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