正如标题所说,我在从PHP脚本连接到MSSQL时遇到问题。
设置: -
如果您有任何调试问题,请不要犹豫。
我正在使用以下测试脚本。
<?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()
答案 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与您的服务器一起使用将是不正确的,脚本将炸弹。