gpt4 book ai didi

php - 从 PHP 连接到 Microsoft SQL Server Express (2008) 时遇到问题

转载 作者:行者123 更新时间:2023-12-04 07:10:00 25 4
gpt4 key购买 nike

正如标题所说,我在从 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][Driver Manager]Data source name not found, and no default driver specified, SQL 状态 IM002 in SQLConnect in/mnt/filestore/vhost/bggs/hr_database/Dev/includes/adodb5/drivers/adodb-odbc.inc.php 在第 60 行
    (odbc_mssql): 设置 CONCAT_NULL_YIELDS_NULL 关闭
    警告:odbc_exec():在第 530 行的/mnt/filestore/vhost/bggs/hr_database/Dev/includes/adodb5/drivers/adodb-odbc.inc.php 中提供的参数不是有效的 ODBC-Link 资源
    IM002:[unixODBC][Driver Manager]未找到数据源名称,并且未指定默认驱动程序

    ADOConnection._Execute(SET CONCAT_NULL_YIELDS_NULL OFF, false) % 第 1017 行,文件: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, ) % 第 524 行,文件:adodb.inc.php
    ADOConnection.Connect(Driver={SQL Server};Server=192.168.70.130;Database=bggs;, sa, knd121) % 第 9 行,文件: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][Driver Manager]未找到数据源名称,并且未指定默认驱动程序

    ADOConnection._Execute(select * from admin_users, false) % line 1017,文件:adodb.inc.php
    ADOConnection.Execute(select * from admin_users) % line 10,文件:test_db.php

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

    最佳答案

    免责声明:我只从 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 与您的服务器一起使用的协议(protocol)将不正确,脚本会爆炸。

    关于php - 从 PHP 连接到 Microsoft SQL Server Express (2008) 时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/519203/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com