ODBCドライバーをMAMP環境に追加するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/223165

  •  03-07-2019
  •  | 
  •  

質問

私は、phpとms accessデータベースを使用して、PCセットアップで構築されたものに取り組んでいます。 MAMP環境にアプリを移植すると、

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はMAMPバージョンのPHPにコンパイルされていないようです(5)。また、PDOを使用してみましたが、同様のエラーが発生しました。

誰でもこれを修正する方法を知っていますか?

役に立ちましたか?

解決

実際の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);
        }
    }
  }
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top