2016-07-25 118 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); 

感謝那些誰回答和那些誰被別人回答類似的問題。到達那裏......最終。

乾杯

戴夫