2012-04-24 127 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