将Linux服务器上的PHP连接到运行Windows的远程服务器上的MS SQL

时间:2015-09-03 15:49:23

标签: php sql-server linux

我真的遇到了麻烦。我已经设置了mssql-connect驱动程序并在Linux服务器上运行,它现在了解该功能并且不会返回任何错误。

我让我们的服务器管理团队配置Windows服务器以允许从linux服务器连接。他们测试了这一点,并确认它一切正常,但我似乎无法用PHP连接它。

我尝试了各种连接字符串,但它不会连接,这是一个例子

SELECT DISTINCT
  gaps.gapStartTime as gapStartTime,
  coalesce(gaps.gapEndTime, NOW()) as gapEndTime
FROM
  /* Subquery to get the data we need to "build" the gaps*/
  (SELECT
    e1.endTime as gapStartTime,
    /* There is a gap if the endTime is not between another interval */
    CASE WHEN EXISTS
    (SELECT * FROM e AS e2 WHERE
     e1.endTime between e2.startTime and e2.endTime and
     e1.endTime <> e2.endTime and
     e1.id <> e2.id)
    THEN
      "false"
    ELSE "true" END AS isGap,
    (select min(e3.startTime) FROM e as e3 WHERE e3.startTime > e1.endTime) as gapEndTime
  FROM E AS e1) AS gaps
WHERE
  isGap = "true"
ORDER BY 
  gaps.gapStartTime

我总是得到: 警告:mssql_connect()[function.mssql-connect]:无法连接到服务器:第10行/home/v3rec/public_html/test.php中的214.133.182.71,1443 连接到MSSQL时出错了

MS SQL数据库的用户名和密码。香港专业教育学院尝试使用和没有端口名称。我正在运行SQL 2012,我不确定实例名称是什么?我错过了什么吗?为什么PHP无法连接?

1 个答案:

答案 0 :(得分:3)

我建议您使用PDO并执行此操作:

$dbhost  = "myhost";
$dbport  = 10060;
$dbname  = "tempdb";
$dbuser  = "dbuser";
$dbpass  = "password";
try {
    $dbh = new PDO ("dlib:host=$dbhost:$dbport;dbname=$dbname","$dbuser","$dbpass");
} catch (PDOException $e) {
    echo "Failed to get DB handle: " . $e->getMessage() . "\n";
    exit;
}