尝试将托管的Web应用程序连接到本地数据库?

时间:2014-10-10 16:44:33

标签: php mysql web-applications odbc database-connection

我正在尝试将托管的Web应用程序连接到本地数据库。首先我得到Fatal error: Call to undefined function odbc_connect()错误但在添加“odbc”扩展后我开始得到

Error connecting to the ODBC database: [unixODBC][Driver Manager]Data source name not found, and no default driver specified

我在php脚本中使用以下代码使用ODBC连接到本地数据库

$odbc['dsn'] = "SageLine50v19";
$odbc['user'] = "Peac";
$odbc['pass'] = "XXXX";
$mysql['host'] = "localhost";
$mysql['user'] = "root";
$mysql['pass'] = "";
$mysql['dbname'] = "sagetest";
$mysql['idfield'] = "id";


// Step 1: Connect to the source ODBC database
if ($debug) echo "Connect to " . $odbc['dsn'] . ' as ' . $odbc['user'] . "\n";
$conn = odbc_connect($odbc['dsn'], $odbc['user'], $odbc['pass']);
if (!$conn) {
die("Error connecting to the ODBC database: " . odbc_errormsg());
}

// loop through each table 
$allTables = odbc_tables($conn);
$tablesArray = array();
while (odbc_fetch_row($allTables)) {
 if (odbc_result($allTables, "TABLE_TYPE") == "TABLE") {
    $tablesArray[] = odbc_result($allTables, "TABLE_NAME");
 }
}
 //print_r($tablesArray);      // to list all tables

我的 ODBC.ini 如下所示

[ODBC 32 bit Data Sources]
t=SQL Server Native Client 10.0 (32 bit)
SageLine50v19=Pervasive ODBC Client Interface (32 bit)

[t]
Driver32=C:\Windows\system32\sqlncli10.dll
[SageLine50v19]
Driver32=C:\Program Files (x86)\Pervasive Software\PSQL\bin\w3odbcci.dll

2 个答案:

答案 0 :(得分:0)

  

连接到ODBC数据库时出错:[unixODBC] [Driver Manager]数据   源名称未找到,并且未指定默认驱动程序

<强>问题:

这是您的数据源名称:

[ODBC 32 bit Data Sources]

但是在你的php中你放了

$odbc['dsn'] = "SageLine50v19";

<强>解决方案:

决定你改变一个人:

<强> ODBC.INI

[SageLine50v19]

php

$odbc['dsn'] = "ODBC 32 bit Data Sources";

答案 1 :(得分:0)

究竟是什么平台?

鉴于unixODBC我会期待Unix / Linux。但驱动程序是.dll表示Windows。它是哪一个?

如果驱动程序管理器尝试加载lib并失败,它将提供未找到的&#34;数据源名称,并且未指定默认驱动程序&#34; (这就是规范所坚持的),如果你试图在Unix上使用Windows驱动程序,那么我希望它无法加载。