2013-02-05 3 views
2

내가 pg_fetch_all와 이상한 문제 (postgresql)를 exeriencing 해요을 pg_fetch_all !PHP는 PostgreSQL은

pg_my_admin에 정확히 동일한 SQL 요청을 붙여 넣으면 각 colomn이 반환됩니다.

가 완벽하게 작동

$array = array(); 
    while ($row = pg_fetch_row($result)) { 
     $array[] = $row; 
    } 

로 내 결과를 분석합니다. 왜 ?

+0

PostgreSQL을 응용 프로그램에 종속시키는 대신 데이터베이스 트랜잭션에 PDO (http://php.net/manual/en/book.pdo.php)를 사용하십시오. PDO를 사용하면 응용 프로그램을 수정하지 않고 데이터베이스를 서로 바꿀 수 있습니다. –

+0

감사합니다. 나는 Eden php 툴킷을 사용하고 있는데, 데이터베이스 툴을 위해 PDO를 사용합니다. http://www.eden-php.com/ – Martin

+0

PDO는 데이터베이스에 액세스하기 위해 동일한 기능 세트를 사용할 수 있지만 개발자가 독점적 인 SQL을 사용하여 데이터베이스와 함께 작동하는 응용 프로그램을 작성하는 것을 막을 수는 없습니다. 따라서 PDO가 동일한 코드로 데이터베이스를 전환 할 수 있다고 말하는 것은 사실이 아닙니다. – greg

답변

4

동일한 이름의 열이 두 개 (두 개의 서로 다른 테이블에 있음) 때문입니다.

$query = "SELECT m.id AS mId, v.nom, v.id AS vId FROM machine m, version v WHERE m.id_version = v.id;"; 

것은 그런 다음 당신은

SQL here에서 별명에 대한 자세한 정보를 찾을 수 있습니다 vId 이름으로 이름 mIdv.id와 열 m.id를 검색 할 수 있습니다 : 당신은이 같은 별칭을 사용할 필요가

pg_fetch_row()과 함께 작동하는 이유는이 쿼리가 연관 배열이 아닌 쿼리의 열 인덱스를 기반으로 결과를 반환하기 때문입니다.

+0

굉장! 고마워. – Martin

+0

@ Martin> 기꺼이 도와 드릴 수 있습니다. 특히 테이블을 조인 할 때 SQL 쿼리에서 ALIAS를 사용하여 값을 검색해야하는 습관이 좋습니다. 대답을 수락하는 것을 잊지 마십시오! – koopajah