想要将PHP5连接到MS SQL SERVER 2005

时间:2011-03-03 16:24:26

标签: php sql-server-2005

我有一个用PHP和MSSQL2000制作的应用程序,但现在想将它连接到MSSQL2005数据库。它总是失败,经过一些研究后,我被告知要下载ntwdblib.dll并替换我在我的PHP目录中的旧版本,但仍然无法连接到它。我还在php.ini文件中取消注释了MSSQL扩展。

请有人帮我这个吗?

3 个答案:

答案 0 :(得分:1)

http://www.php.net/manual/en/mssql.installation.php

  

启用MSSQL扩展   添加extension = php_mssql.dll到   php.ini中。        要使这些函数起作用,必须使用PHP编译   --with-mssql [= DIR],其中DIR是FreeTDS安装前缀。和FreeTDS   应该使用编译   --enable-msdblib。

  

如果使用Sybase扩展并且没有MS SQL扩展编译PHP,则MS SQL函数是Sybase函数的别名。

<编辑>
只是问问而已。你有mssql_connect功能吗?或连接失败?如果连接失败,请确保在MSSQL中启用TCP / IP(使用SQL Server配置管理器)。我还记得启用命名管道,但我不确定是否需要它 < /编辑>

作为替代方案,您可以查看COM和ADODB。

使用Windows身份验证连接到SQL Server的COM和ADODB示例:

    $this->m_conn = new COM("ADODB.Connection");
    $this->m_conn->CommandTimeout=1200;
    $dsn="Provider=SQLNCLI;Data Source=server_name;Integrated Security=SSPI;Initial Catalog=database_name;Application Name=YourAppName - ".$user['name'];
    $this->m_conn->Open($dsn);
    if(!$this->m_conn)
        throw new Exception("Could not start ADO",101);
    $this->m_comm = new COM("ADODB.Command");
    $this->m_comm->ActiveConnection=$this->m_conn;
    $this->m_comm->CommandTimeout=1200;

然后执行命令

    $this->m_comm->CommandText=$sql;
    $res=$this->m_comm->Execute();

然后提取数据

    if(($num_cols=$res->Fields->Count())>=1)
    {
        $return=array();
        while(!$res->EOF)
        {
            $row=array();
            for($i=0;$i<$num_cols;$i++)
                $row[$res->Fields($i)->name]=$res->Fields($i)->value;
            $res->MoveNext();
            $return[]=$row;
        }
    }

    $res->Close();
    return $return;

不确定很多请求的速度,但这是一个很好的方法,可以毫不费力地使用DSN,并且使用DSN可以指定比使用函数参数更多的东西。

修改的: 您可以使用ADO定义自己的mssql_connect(),mssql_command()等。如果常规的mssql扩展不起作用,那就是解决方法。

答案 1 :(得分:0)

您也可以尝试从php中构建数据库包装器PDO。

以下是有关PDO的一些信息:PDO

以下是有关使用MSSQL与PDO MSSQL and PDO

的信息

答案 2 :(得分:0)

非常感谢你的帮助。 实际上我确实找到了一种让它发挥作用的方法 首先让我先谈谈我对系统要求的比较。
我的系统
操作系统:-Win xP SP2
PHP: - 5.3.5
MSSQL 2005
SQL Native Client 2005

<强>必需

推荐:-Win xP SP3
PHP: - 5.2.4或更高版本
MSSQL Server 2008 Native Client(在同一台计算机上运行php)
适用于PHP的SQL Server驱动程序

将我的Windows升级到Service Pack 3后,我下载并安装了MSSQL Server 2008 Native Client 然后安装了SQL Server Driver For PHP 2.0,它要求一个目录来保存dll文件。 我浏览到php目录,然后浏览复制dll文件的'ext'文件夹。 然后转到php.ini文件并在Dynamic Extensions下添加这两行。

延长= php_sqlsrv_53_ts_vc6.dll
延长= php_pdo_sqlsrv_53_ts_vc6.dll

然后重启我的网络服务器和booommm ....我得到它的工作.. 做了一个与数据库的测试连接,它成功了..

希望这会有所帮助,感谢大家的帮助,真的很感激.. 和平