2008-10-21 10 views
1

나는 php와 ms 액세스 데이터베이스를 사용하여 PC에 구축 된 무언가를 연구 중이다. 내 MAMP 환경에 응용 프로그램, 나는MAMP 환경에 ODBC 드라이버를 추가하려면 어떻게합니까?

Fatal error: Call to undefined function odbc_connect() in /path/to/index.php on line 37 

라인이 같은 37 외모를 얻을 때 나는 포트 :

return odbc_connect("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=myfile.mdb", 
"ADODB.Connection", "", "SQL_CUR_USE_ODBC"); 

는 ODBC는 PHP의 MAMP 버전으로 컴파일되지 않는 것 같다 (5). 나 또한 PDO를 사용하여 시도하고 비슷한 오류가 발생했습니다.

누구든지 문제를 해결하는 방법을 알고 계십니까?

+0

MS가 "Microsoft Access Driver"를 ODBC의 이름으로 사용 했음에도 불구하고 Jet 데이터 용 드라이버. Access를 전혀 사용하지 않고 Jet 만 사용할 수 있습니다. 나는 그것이 혼란의 세계를 구할 것이기 때문에 그들이 그렇게 이름을 짓지 않았 으면 좋겠다. –

답변

3

컴퓨터에 Actual ODBC과 같은 ODBC 드라이버를 추가해야합니다. 즉, 사용중인 PHP 버전이 준수해야하는 ODBC 기능이있는 경우, 다른 버전을 설치해야합니다. 적절한 지원. MacPorts을 사용하여 PHP를 설치하면 좋은 행운을 얻었습니다. 그러나 다음과 같은 함수에 대한 래퍼를 작성해야 할 것으로 예상 할 수있는 함수가 아직 남아 있습니다.

if(!function_exists("odbc_fetch_array")) 
    { 
    function odbc_fetch_array($aResult,$anAssoc=false) 
    { 
     # Out of rows? Pass back false! 
     if(!odbc_fetch_row($aResult)) return false; 

     $theRow = array(); 

      # Build up array 
     $theNumFields = odbc_num_fields($aResult); 
     $theLimit = $theNumFields+1; 
      for($i=1; $i<$theLimit; $i++) 
      { 
      # WARNING: Starts our index at 0, unlike standard ODBC which starts at 1 
       $theRow[odbc_field_name($aResult, $i)] = odbc_result($aResult, $i); 
       if(!$anAssoc) $theRow[$i-1] = $theRow[odbc_field_name($aResult, $i)]; 
     } 
     return $theRow; 
    } 
    } 

    if(!function_exists("odbc_fetch_assoc")) 
    { 
    function odbc_fetch_assoc($aResult) 
    { 
     if (DIRECTORY_SEPARATOR == '/') // call local function on MACs 
     { 
      return odbc_fetch_array($aResult,true); 
     } 
     else // call built in function on Windows 
     { 
      return odbc_fetch_array($aResult); 
     } 
    } 
    }