将现有php界面连接到现有SQL Server DB的问题 - odbc错误

时间:2011-01-09 18:34:56

标签: php sql odbc

将现有的(不是我自己编程的)PHP接口连接到现有的SQL Server数据库时遇到了很大的麻烦。我一直在使用odbc“系统DSN”接口从我自己编写的PHP接口访问本地SQL Server数据库的副本以进行测试。但是,我猜,我本地测试环境中的odbc界面看起来与真实服务器上的不同。

我正在使用如下代码建立odbc连接:

$db_server ="localhost"; 
$db_name  ="testdb"; 
$db_user    ="testuser";   
$db_pass    ="test";

$conn = odbc_connect($db_name, $db_user, $db_pass) or die ('Can not connect '. $db_name); 

这很好 - 我可以访问数据库,一切正常。

我尝试在我的测试环境中集成的PHP接口以这种方式进行连接:

$db_server = "localhost"; # I changed that one from the original server name
$db_user   = "testuser";
$db_pass   = "test";
$db_name   = "testdb";
$connection_id = odbc_connect($dbserver, $dbuser, $dbpass);

所以看起来服务器上的连接没有提到$ db_name字段。听起来很奇怪,但我通过odbc只是一个关于SQL的新手 - 通常我只使用MySQL。

因此,当PHP代码尝试访问数据库时,会发生以下错误:

  

警告:odbc_connect()   [function.odbc-connect]:SQL错误:   [Microsoft] [ODBC驱动程序管理器]数据   找不到源名称,也没有默认值   驱动程序指定,SQL状态IM002中   SQLConnect in   d:\ XAMPP \ XAMPP \ htdocs中\ TESTDB \ global.include   在线xxx

     

xxx是包含的行   “$ connection_id =   odbc_connect($ dbserver,$ dbuser,   $ DBPASS); “

任何想法如何使这个东西工作?我几乎绝对相信它与我机器上定义的odbc数据接口有关,但我现在还不知道。

非常感谢任何形式的帮助!

谢谢, 武

1 个答案:

答案 0 :(得分:2)

通过ODBC连接时,实际上并未指定数据库的目标详细信息,而是指定数据源名称。在数据源注册表中查找此数据源名称,并从那里获取连接详细信息。因此,您需要将$ db_server设置为数据源名称,而不是实际的主机名。