Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于wamp的php mssql扩展_Php_Sql Server_Database_Wamp_Wampserver - Fatal编程技术网

基于wamp的php mssql扩展

基于wamp的php mssql扩展,php,sql-server,database,wamp,wampserver,Php,Sql Server,Database,Wamp,Wampserver,我试图让wamp php与MsSQL数据库通信,但似乎无法使其正常工作。我在浏览器(Chrome)上收到的当前错误消息是: ntwdblib.dll是正确的版本(2000.80.194.0) 我不能使用php_sqlsrv(部署服务器仅限linux,sqlsrv仅限windows),尽管通过使用sqlsrv,我可以断定访问信息是正确的(服务器、用户、密码) 我已经降级回WAMPServer2.1e和PHP5.3.1(有些人就是这样工作的) 重新启动wamp服务器时,apache_error.lo

我试图让wamp php与MsSQL数据库通信,但似乎无法使其正常工作。我在浏览器(Chrome)上收到的当前错误消息是:

  • ntwdblib.dll是正确的版本(2000.80.194.0)

  • 我不能使用php_sqlsrv(部署服务器仅限linux,sqlsrv仅限windows),尽管通过使用sqlsrv,我可以断定访问信息是正确的(服务器、用户、密码)

  • 我已经降级回WAMPServer2.1e和PHP5.3.1(有些人就是这样工作的)

  • 重新启动wamp服务器时,apache_error.log上没有错误

  • 在我的机器上安装freetds会挂起apache

  • 远程计算机成功使用php_mssql.dll(linux服务器)

  • 我正在使用的代码:

    <?php
    $dbhandle = mssql_connect($ip,$user,$pass) or die("Couldn't connect to SQL Server on $ip"); 
    $selected = mssql_select_db($dbname,$dbhandle) or die("Couldn't open database at SQL server: $ip");
    ?>
    

    您安装了MsSQL吗?因为WAMP的M是MySQL而不是MSSQL

    无法连接到服务器:(…)无法连接到SQL server“

    您是否在PHP for MS-SQL中安装了任何驱动程序模块

    除此之外,虚拟机并不一定速度慢且没有特性——至少它可以工作:)

    MDB2或PDO可能最适合抽象数据库I/O

    问:您能否打开MS-SQL终端,例如Telnet

    (这至少可以解决任何类型的连接问题)

    这里可能需要此模块:PECL odbtp>=1.1.1(开放数据库传输协议)

    ^此外,如果此扩展已加载,请签出phpinfo()一次


    好吧-在Windows上安装mySQL不会有任何问题(以防有意义)。

    假设您已尝试从此处安装驱动程序/扩展: 您已经在*AMP堆栈的
    php
    文件夹中更改了
    php.ini
    ;并将mssql扩展放在
    php/ext
    文件夹中

    经过几个小时的查看,本指南成功地将我连接到MS SQL数据库。

    编辑:此外,我的连接类将DB Uname PW和serverIP作为构造函数参数,构造函数调用函数setCon(),因此当创建对象时,连接也是如此。然后我可以以OOP样式调用连接对象上的查询

        function setCon(){
        $conn = mssql_connect($this->server, $this->UName, $this->pw);
        if ($conn){
            echo "Connection established @ $this->server.$this->DB (Connected to MS SQL DB)\n";
        }
        else{
            echo "Connection could not be established.";
            die( print_r( sqlsrv_errors(), true));
        }
    
    然后,稍后需要访问创建的连接

    function getCon(){
        return mssql_connect($this->server, $this->UName, $this->pw);
    }
    

    实际上,默认情况下,wampserver不附带php_mssql.dll,扩展是在php_pdo_mssql或php_dblib之上进行的。 在x64 wampserver 2 PHP 5.3.13上测试

    • 使用php_pdo_mssql

    • 安装wampserver
    • 激活php_pdo_mssql
    • 激活php_mssql
    • 将ntwdblib.dll复制到bin/php/php{version}/ext/和bin/apache/{version}/bin
    • 重新启动所有服务
    • 使用php_dblib

    • 激活php_dblib而不是php_pdo_mssql
    警告不要同时激活php_pdo_mssql和php_dblib


    在不同版本的php上,wampserver在5.3.1上的工作方式不同。第一个解决方案对我有效,但在5.3.13秒。

    你能显示你尝试过的代码吗?当然,这是我的代码:$dbhandle=mssql\u connect($ip,$user,$pass)或die(“无法在$ip上连接到SQL Server”);$selected=mssql\u select\u db($dbname,$dbhandle)或die(”无法在SQL server上打开数据库:$ip”);仍然无法解决此问题。现在我正在使用一个函数检查网站是否联机。如果是,则调用mssql(在linux服务器上工作),如果不是,它会调用mysql上的假表,这些表与mssql表具有相同的结构。这是可行的,但远不是理想的…:谢谢你的回复。我安装了php_mssql扩展,apache没有报告错误。我也知道没有连接问题,因为如果我使用sqlsrv扩展(使用相同的设置)一切正常。我知道,但在这种情况下我需要使用mssql数据库,而不是mysql。数据库是远程的,不在我的机器上。
        function setCon(){
        $conn = mssql_connect($this->server, $this->UName, $this->pw);
        if ($conn){
            echo "Connection established @ $this->server.$this->DB (Connected to MS SQL DB)\n";
        }
        else{
            echo "Connection could not be established.";
            die( print_r( sqlsrv_errors(), true));
        }
    
    function getCon(){
        return mssql_connect($this->server, $this->UName, $this->pw);
    }