有问题从PHP连接到Microsoft SQL Server Express(2008)

时间:2009-02-06 05:19:07

标签: php sql-server tsql connect

正如标题所说,我在从PHP脚本连接到MSSQL时遇到问题。

设置: -

  • PHP正在Apache Linux服务器上运行。
  • Microsoft SQL Server 2008位于XP计算机上。
  • 我在MSSQL Server中启用了远程连接。
  • 数据库bggs确实存在。
  • 数据库正在运行(我可以看到绿色箭头)。
  • 我的XP机器上没有防火墙。

如果您有任何调试问题,请不要犹豫。

我正在使用以下测试脚本。

<?php
    include('adodb5/adodb.inc.php');
    $db =& ADONewConnection('odbc_mssql');
    $db->debug = true;
    $dsn = "Driver={SQL Server};Server=ozmodiar;Database=bggs;";
    $db->Connect($dsn,'user','password');
    $rs = $db->Execute('select * from admin_users');
    print "<pre>";
    print_r($rs->GetRows());
    print "</pre>";
?>

获得以下结果。

警告:odbc_connect()[function.odbc-connect]:SQL错误:[unixODBC] [驱动程序管理器]未找到数据源名称,未指定默认驱动程序,/ mnt / filestore / vhost中SQLConnect中的SQL状态IM002 60行/bggs/hr_database/Dev/includes/adodb5/drivers/adodb-odbc.inc.php (odbc_mssql):SET CONCAT_NULL_YIELDS_NULL OFF
警告:odbc_exec():提供的参数不是530行/mnt/filestore/vhost/bggs/hr_database/Dev/includes/adodb5/drivers/adodb-odbc.inc.php中的有效ODBC-Link资源 IM002:[unixODBC] [驱动程序管理器]未找到数据源名称,并且未指定默认驱动程序

ADOConnection._Execute(SET CONCAT_NULL_YIELDS_NULL OFF,false)%line 1017,file:adodb.inc.php ADOConnection.Execute(SET CONCAT_NULL_YIELDS_NULL OFF)%62行,文件:adodb-odbc.inc.php ADODB_odbc._connect(Driver = {SQL Server}; Server = 192.168.70.130; Database = bggs;,sa,knd121,)%line 524,file:adodb.inc.php ADOConnection.Connect(Driver = {SQL Server}; Server = 192.168.70.130; Database = bggs;,sa,knd121)%line 9,file:test_db.php

Driver = {SQL Server}; Server = 192.168.70.130; Database = bggs;:[unixODBC] [Driver Manager]找不到数据源名称,并且未指定默认驱动程序 (odbc_mssql):从admin_users中选择* 警告:odbc_exec():提供的参数不是530行/mnt/filestore/vhost/bggs/hr_database/Dev/includes/adodb5/drivers/adodb-odbc.inc.php中的有效ODBC-Link资源 IM002:[unixODBC] [驱动程序管理器]未找到数据源名称,并且未指定默认驱动程序

ADOConnection._Execute(从admin_users中选择*,false)%line 1017,file:adodb.inc.php ADOConnection.Execute(从admin_users中选择*)%10行,文件:test_db.php

致命错误:在第12行的/mnt/filestore/vhost/bggs/hr_database/Dev/includes/test_db.php中的非对象上调用成员函数GetRows()

1 个答案:

答案 0 :(得分:3)

免责声明:我只查询了Microsoft SQL Server 2000中的数据,但是通过PDO_DBLIB查询了数据,尽管我认为确定ADODB或PDO_DBLIB的freetds驱动程序的先决条件。

根据初始错误消息判断,您没有安装必要的驱动程序。为了让您的应用程序访问服务器,您需要安装freetds,它将安装必要的驱动程序并允许您设置ODBC连接。查看:http://www.linuxjournal.com/article/6636

重要的是要注意,你需要在你的freetds全局配置或特定的OBDC连接(默认情况下在debian上的/etc/freetds/freetds.conf)中设置“tds version = x.x”,或者协议freedtds与您的服务器一起使用将是不正确的,脚本将炸弹。