1

我正在使用 php 和 ms 访问数据库在 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 没有编译到 PHP (5) 的 MAMP 版本中。我也尝试过使用 PDO,并得到了类似的错误。

有人知道怎么修这个东西吗?

4

1 回答 1

3

您需要将 ODBC 驱动程序(如Actual 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);
        }
    }
  }
于 2008-10-21T22:42:49.537 回答