2012-07-26 5 views
0

같은 쿼리를 사용할 때 Toad for Oracle을 사용하고 PHP 함수 oci_fetch_assoc을 사용하면 oci_fetch_assoc에서 반환 한 데이터 배열이 몇 개의 열에없고 몇 개의 열이 alltogether가 누락되었습니다. 기대되는 모든 것은 Toad 결과에 존재합니다.PHP와 Toad Oracle 쿼리 결과가 다릅니다

내가 검색하고 해결책을 찾지 못했습니다. 11.2.0.1.0

내 PHP의 OCI8 정보

OCI8 지원 - -

Toad는 인스턴트 클라이언트 사용 활성화

버전 1.4.6

개정 $ 개정 : 313688 $

활성 영구 연결 0

,451,515,

활성 연결 0

오라클 런타임 클라이언트 라이브러리 버전 11.2.0.2.0

오라클 인스턴트 클라이언트 버전 10.2

임시 로브 지원 지원

컬렉션 사용 사용

답변

0

PHP와 Toad에서 똑같은 질의를 실행하고 결과가 다른 경우 유일한 결론은 PHP가 몇 개의 열을 무시한다는 것입니다. 결과 집합.

+0

왜 그런 일이 벌어 질까요? – Mladen

+0

코드에 아무 것도 쓰지 않으므로? – Fluffeh

+0

PHP에서 쿼리에 의해 반환 된 배열을 var_dumping하고 있습니다. 열은 단순히 거기에 존재하지 않습니다. – Mladen

0

oci_fetch_assoc을 사용하면 NULL이 아닌 값이있는 필드 만 반환됩니다.

for ($i=1; $i<=oci_num_fields($parsed); $i++) 
{ 
    $col = oci_field_name($parsed, $i); 
    $columnNames[] = $col; // store column names in array 
} 

는 함수가 다음과 같이 보입니다 가져 오기의 나 : 내가이 코드로 COLUMNNAMES를 가져 오기이 작업을하려면

function fetch() 
{ 
    global $columnNames; // (I actually have a Query class so I use $this->columnNames) 
    $row = oci_fetch_array($parsed, OCI_ASSOC); 
    foreach ($columnNames as $colname) 
     $row[$colname] = isset($row[$colname]) ? $row[$colname] : null; 

    return $row; 
} 

편집 : 또 다른 (덜) 가능성이 누락 된 열이 있다는 것입니다 클리브. OCI_RETURN_LOBS 플래그를 가진 객체를 가져와야합니다 (oci_fetch_array 참조)

관련 문제