从托管的Linux PHP访问远程MSSQL Server

时间:2016-07-25 08:42:08

标签: php sql-server iis-7

我已经看到了许多类似的问题,但通常可以通过访问服务器来安装额外的软件包(如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服务器?

提前致谢,

戴夫

2 个答案:

答案 0 :(得分:0)

你试过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'

答案 1 :(得分:0)

经过多次反复试验后我才进入。

  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);

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

干杯

戴夫