2016-07-25 117 views
1

我见过很多问类似的问题,但这些问题通常可以通过访问服务器来安装额外的软件包(如FreeTDS)来解决。我们没有像linux和1and1托管的服务器。从托管linux访问远程MSSQL服务器PHP

我的代码(由别人放在这里前面一个问题)是:

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服务器?

由于提前,

戴夫

回答

0

你试过mssql_connect?

这里的语法: mssql_connect([字符串$服务器名[,字符串$用户名[,字符串$密码[,布尔$ new_link =假]]]])

你的情况,那就是:

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

请注意,$主机名应包含MSSQL实例名称。例如“KALLESPC \ SQLEXPRESS”

+0

我相信mssql_connect是在PHP弃用5.4 感谢 似乎$胸径=新PDO(“DBLIB:主机= $主机名:$端口; DBNAME = $ DBNAME ”, “$用户名”, “私服$”);不正确,应该是: $ dbh = new PDO(“sqlsrv:Server = $ hostname:$ port; Database = $ dbname”,“$ username”,“$ pw”); 仍然没有工作,但前进。 – demsley

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

感谢那些谁回答和那些谁被别人回答类似的问题。到达那里......最终。

干杯

戴夫