如何将一个ODBC驱动程序添加到MAMP环境?
问题描述:
我正在使用php和ms访问数据库建立在PC设置上的东西。当我端口应用到我的MAMP环境,我得到如何将一个ODBC驱动程序添加到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的MAMP版本(5)。我也尝试使用PDO,并得到类似的错误。
任何人都知道如何解决这个问题?
答
您将需要为您的机器添加一个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);
}
}
}
尽管MS采用了“Microsoft Access驱动程序”为ODBC的名字的事实Jet数据驱动程序,你根本不使用Access,只有Jet。我希望他们不要这样命名,因为这会拯救一个混乱的世界。 – 2008-10-24 03:35:08