2012-04-24 169 views
0

當我運行Apache(通過XAMPP)作爲一個獨立的服務器不作爲服務PHP的阿帕奇(XAMPP)ODBC連接問題

與下面的連接代碼(Windows Server 2008上)一切正常去除細小(用戶名和密碼)

$server = "WMS"; 
$link = odbc_connect($server,'',''); 

if (!$link) { 
    die('Something went horribly wrong while connecting to MSSQL'); 
}else {echo('');} 

然而,如果我改變阿帕奇到Windows的連接中斷服務來運行,我得到了以下錯誤消息

Warning: odbc_connect() [function.odbc-connect]: SQL error: [Microsoft][ODBC Driver Manager] 
Data source name not found and no default driver specified, SQL state IM002 in SQLConnect in 
C:\xampp\htdocs\Dev\well.php on line 30 

    Something went wrong while connecting to MSSQL 

回答

1

請閱讀文檔:http://uk.php.net/manual/en/function.odbc-connect.php

$server = "WMS";建議您使用該名稱配置ODBC別名/數據源。錯誤消息清楚地表明沒有找到具有這種名稱的數據源(WMS)。在Windows 7/Vista/XP/Server上,您可以在「開始 - >管理工具 - >數據源(ODBC)」中配置它們 - 路徑在較早的操作系統上可能不同。在任何情況下 - 查找「Microsoft ODBC數據源管理員」。

而不是使用別名,我會推薦(我總是連接的方式)使用完整的DSN名稱,例如,

// Microsoft SQL Server using the SQL Native Client 10.0 ODBC Driver - allows connection to SQL 7, 2000, 2005 and 2008 
$link = odbc_connect("Driver={SQL Server Native Client 10.0};Server=$server;Database=$database;", $user, $password); 

在這種情況下,一切都是腳本的一部分,沒有外部依賴關係。

BTW - 而不是使用ODBC函數,我會建議使用PDO &驅動程序專爲MS SQL Server的:PDO_SQLSRV - http://uk.php.net/manual/en/ref.pdo-sqlsrv.php(或的Microsoft SQL Server驅動程序PHP如果你喜歡舊的程序風格 - http://uk.php.net/manual/en/book.sqlsrv.php

+0

我確實有一個名爲WMS的數據源(ODBC)設置,我認爲這就是它現在的工作方式,因爲如果我改變'$ server =「WMS」;'到其他東西,它不會連接(當apache不作爲服務運行時)或許我需要odbc_connect行中的驅動程序信息,我會嘗試 – ScottC 2012-04-24 12:33:50

+0

也我正在使用SQL Server 2012那一行也適用於2012?或者我應該做點不同的事情? – ScottC 2012-04-24 12:34:54

+0

我正在使用下面的行連接到SQL Server 2008 R2以及SQL Server 2005(這一切都取決於您擁有的SQL Server Native Client版本 - 我是從SQL Server 2008開始的) - 據我所知2012版的連接字符串應該是相同的。 ''Provider = SQLNCLI10; SERVER ='。CFG_DB_SERVER。'; UID ='.CFG_DB_LOGIN。'; PWD ='.CFG_DB_PASSWORD。'; DATABASE ='.CFG_DB_DATABASE。'''' – LazyOne 2012-04-24 12:57:59