php apache(xampp)odbc连接问题

时间:2012-04-24 11:58:33

标签: php apache sql-server

当我将apache(通过xampp)作为独立服务器而不是作为服务运行时(在Windows Server 2008上)

使用以下连接代码一切正常(用户名和密码已删除)

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

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

但是,如果我将Apache更改为在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 个答案:

答案 0 :(得分: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 - 我建议使用 PDO &amp ;;而不是使用ODBC函数。专门针对MS SQL Server的驱动程序: PDO_SQLSRV - http://uk.php.net/manual/en/ref.pdo-sqlsrv.php(或用于PHP的Microsoft SQL Server驱动程序,如果您更喜欢旧的程序样式 - http://uk.php.net/manual/en/book.sqlsrv.php