Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将现有php接口连接到现有SQL Server DB时出现问题-odbc错误_Php_Sql_Odbc - Fatal编程技术网

将现有php接口连接到现有SQL Server DB时出现问题-odbc错误

将现有php接口连接到现有SQL Server DB时出现问题-odbc错误,php,sql,odbc,Php,Sql,Odbc,我在将现有(不是我自己编程的)PHP接口连接到现有SQL Server DB时遇到了巨大的困难。我一直在使用odbc“system DSN”接口,从我自己的自行编程PHP接口访问此SQL Server DB的副本,以便在本地机器上进行测试。但我想,本地测试环境中的odbc接口可能与实际服务器上的odbc接口不同 我正在使用如下代码建立odbc连接: $db_server ="localhost"; $db_name ="testdb"; $db_user ="testuser";

我在将现有(不是我自己编程的)PHP接口连接到现有SQL Server DB时遇到了巨大的困难。我一直在使用odbc“system DSN”接口,从我自己的自行编程PHP接口访问此SQL Server DB的副本,以便在本地机器上进行测试。但我想,本地测试环境中的odbc接口可能与实际服务器上的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\u id= odbc_connect($dbserver,$dbuser, $dbpass);”

有什么办法让它工作吗?我几乎完全肯定这与我的机器上定义的odbc数据接口有关,但我现在不知道

非常感谢您的任何帮助

谢谢,
Sasha

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

您的第二个代码段初始化$db_server等,然后使用$dbserver,对吗?您好,araqnid,非常感谢!这就是让我如此困惑的原因!啊,浪费了这么多时间,犯了这么简单又愚蠢的错误——就像往常一样。。。解决了。@莎莎-如果这个答案解决了你的问题,考虑标记为接受,并提供了一个表决。它不仅感谢@araqnid,还向社区展示了答案在您的问题中是有价值的。我刚刚发现您必须指定一个系统数据源,而不是用户数据源。我花了一个小时才弄明白。