【问题标题】:Accessing Remote MSSQL Server from hosted linux PHP从托管的 linux PHP 访问远程 MSSQL Server
【发布时间】:2016-07-25 08:42:08
【问题描述】:

我已经看到许多类似的问题,但通常可以通过访问服务器来安装额外的软件包(例如 FreeTDS)来回答这些问题。我们没有这样的访问权限,因为 linux 服务器是由 1and1 托管的。

我的代码(来自其他人在此处提出的较早问题)是:

  try {
    $hostname = "xx.xx.xx.xx";
    $port = xxxxx;
    $dbname = "ClientDatabase";
    $username = "uuuu";
    $pw = "pppp";
    $dbh = new PDO ("dblib:host=$hostname:$port;dbname=$dbname","$username","$pw");
  } catch (PDOException $e) {
    echo "Failed to get DB handle: " . $e->getMessage() . "\n";
    exit;
  }
  $stmt = $dbh->prepare("select name from master..sysdatabases where name = db_name()");
  $stmt->execute();
  while ($row = $stmt->fetch()) {
    print_r($row);
  }
  unset($dbh); unset($stmt);

我得到的错误信息是:

Failed to get DB handle: could not find driver 

MSSQL 服务器是可访问的,因此我可以在必要时为其添加功能。 MSSQL 服务器也在运行 IIS7,但不运行 PHP。我对 IIS7 知之甚少,但是在上面运行 PHP 脚本会比在托管的 linux 机器上更容易吗?

谁能告诉我是否真的可以连接到 MSSQL 服务器?

提前致谢,

戴夫

【问题讨论】:

    标签: php sql-server iis-7


    【解决方案1】:

    你尝试过 mssql_connect 吗?

    语法如下: mssql_connect ([ string $servername [, string $username [, string $password [, bool $new_link = false ]]]])

    在你的情况下是:

    $link = mssql_connect($hostname, $username, $pw);
    mssql_select_db($dbname, $link);
    

    注意 $hostname 应该包含 MSSQL 实例名称。例如'KALLESPC\SQLEXPRESS'

    【讨论】:

    • 我相信 mssql_connect 在 php 5.4 中已被弃用 谢谢 似乎 $dbh = new PDO ("dblib:host=$hostname:$port;dbname=$dbname","$username","$ pw");不正确,应该是: $dbh = new PDO ("sqlsrv:Server=$hostname:$port;Database=$dbname","$username","$pw");仍然没有工作,但继续前进。
    【解决方案2】:

    经过多次尝试和错误,我进入了。

      try {
        $hostname = "localhost";
        $port = 123456;
        $dbname = "ClientDatabase";
        $username = "uuuu";
        $pw = "pppp";
        $dbh = new PDO ("sqlsrv:Server=$hostname,$port;Database=$dbname","$username","$pw");
      } catch (PDOException $e) {
        echo "Failed to get DB handle: " . $e->getMessage() . "\n";
        exit;
      }
      $stmt = $dbh->prepare("select name from master..sysdatabases where name = db_name()");
      $stmt->execute();
      while ($row = $stmt->fetch()) {
        print_r($row);
      }
      unset($dbh); unset($stmt);
    

    感谢那些回答的人和那些回答其他人类似问题的人。到了那里......最终。

    干杯

    戴夫

    【讨论】:

      猜你喜欢
      • 2017-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-07
      • 1970-01-01
      • 2018-05-24
      • 2012-10-17
      相关资源
      最近更新 更多