【问题标题】:php mssql extension on wampwamp 上的 php mssql 扩展
【发布时间】:2013-02-14 23:47:04
【问题描述】:

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

Warning: mssql_connect() [function.mssql-connect]: Unable to connect to server: (...) Couldn't connect to SQL Server
  1. ntwdblib.dll 是正确的版本 (2000.80.194.0)

  2. 我不能使用 php_sqlsrv(部署服务器仅是 linux,sqlsrv 仅是 windows),尽管从使用 sqlsrv 可以得出访问信息正确的结论(服务器、用户、密码)

  3. 我已降级回 wampserver 2.1e 和 php 5.3.1(有些人让它像这样工作)

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

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

  6. 远程机器成功使用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");
?>

我现在要尝试一个 linux 虚拟机,但即使这样肯定会很痛苦(速度慢且功能少)。

我的系统:Windows 7、Wampserver 2.1e、PHP 5.3.1

我还能尝试什么? :(

【问题讨论】:

  • 你能显示你试过的代码吗?
  • 当然,这是我的代码:$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(在 linux 服务器上工作),如果不是,则调用 mysql 上的假表,其结构与 mssql 表相同。这可行,但远非理想......:P

标签: php sql-server database wamp wampserver


【解决方案1】:

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

【讨论】:

  • 我知道,但在这种情况下我需要使用 mssql db,而不是 mysql。数据库是远程的,不在我的机器上。
【解决方案2】:

无法连接到服务器:(...) 无法连接到 SQL Server"

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

除此之外,VM 不一定很慢且毫无功能 - 至少它可以工作 :)

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

问:你能打开一个终端到 MS-SQL,例如远程登录??

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

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

extension=php_mssql.dll

^ 同样,如果这个扩展已经加载,检查 phpinfo() 一次。

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

嗯 - 在 Windows 上安装 mySQL 不会有任何问题(以防万一)。

【讨论】:

  • 感谢您的回复。我安装了 php_mssql 扩展并且 apache 没有报告错误。我也知道没有连接问题,因为如果我使用 sqlsrv 扩展(具有相同的设置)一切正常。
【解决方案3】:

假设您已尝试从此处安装驱动程序/扩展:http://www.microsoft.com/en-gb/download/details.aspx?id=20098 并且您已经更改了 *AMP 堆栈的 PHP 文件夹中的 php.ini..;并将 mssql 扩展名放在php/ext 文件夹中...

经过几个小时的查找,本指南成功地将我连接到 MS SQL 数据库。 http://webcheatsheet.com/php/connect_mssql_database.php

编辑:此外,我的连接类将 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);
}

【讨论】:

    【解决方案4】:

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

    • 使用 php_pdo_mssql

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

      1. 而不是 php_pdo_mssql 激活 php_dblib。

    警告不要同时激活 php_pdo_mssql 和 php_dblib。

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

    【讨论】:

      猜你喜欢
      • 2016-09-05
      • 1970-01-01
      • 1970-01-01
      • 2013-03-20
      • 2016-05-05
      • 1970-01-01
      • 1970-01-01
      • 2011-10-11
      • 2011-08-03
      相关资源
      最近更新 更多