将现有的(不是我自己编程的)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数据接口有关,但我现在还不知道。
非常感谢任何形式的帮助!
谢谢, 武
答案 0 :(得分:2)
通过ODBC连接时,实际上并未指定数据库的目标详细信息,而是指定数据源名称。在数据源注册表中查找此数据源名称,并从那里获取连接详细信息。因此,您需要将$ db_server设置为数据源名称,而不是实际的主机名。