2012-06-18 50 views
0

我使用此代碼連接到SQL Server 2012進行連接,但它不能正常工作SQL服務器地址,使用PHP

<?php 
$objConnect = mssql_connect("localhost","usr","pass"); 

if($objConnect) 
{ 
    echo "Database Connected.<br />"; 
    echo mssql_error(); 
} 
else 
{ 
    echo "Database Connect Failed.<br />"; 
} 

mssql_close($objConnect); 
?> 

它始終打印Database Connect Failed.

此外,我怎麼能連接到我本地的SQL服務器從外部Web服務器?

回答

3

如果你的版本是SQL Server Express時,你或許應該使用:

$objConnect = mssql_connect("localhost\SQLEXPRESS","usr","pass"); 

,或者如果它以其他方式命名實例,然後

$objConnect = mssql_connect("localhost\InstanceName","usr","pass"); 

如果需要遠程連接,然後顯然你不應該使用localhost,因爲遠程Web服務器如何定位你的localhost?您應該使用下列之一(假設遠程Web服務器可以看到IP地址192.168.5.22機器):

$objConnect = mssql_connect("192.168.5.22\SQLEXPRESS","usr","pass"); 
$objConnect = mssql_connect("192.168.5.22\NamedInstance","usr","pass"); 
$objConnect = mssql_connect("192.168.5.22","usr","pass"); 

當然,防火牆必須具有1433端口(也可能是1434)打開,以便接受這種聯繫,還有其他各種可能在這裏出錯的事情。

但是,有點調試101的建議。相反的:

if($objConnect) 
{ 
    echo "Database Connected.<br />"; 
    echo mssql_error(); 
} 
else 
{ 
    echo "Database Connect Failed.<br />"; 
} 

爲什麼不:

if($objConnect) 
{ 
    echo "Database Connected.<br />"; 
} 
else 
{ 
    echo "Database Connect Failed.<br />"; 
    echo mssql_error(); 
} 

當然,你並不需要在數據庫成功連接到錯誤寫入頁。告訴我們您收到的實際錯誤信息可能會使我們更好地指導您解決方案的方向。您編寫的通用「數據庫連接失敗」消息不會讓任何人知道實際出錯的原因。但我敢打賭mssql_error()可能!

+0

我的實例名稱爲MSSQLSERVER,仍然無法連接和msql_error()不顯示任何東西,可以幫助嗎?謝謝你的答案 – FDI

+0

對不起,如果你不能告訴我,我幫不了什麼錯誤是。 'mssql_error()'函數或者導致這一點的函數是否有try/catch或其他潛在的處理程序在地板上放置錯誤? –

+0

謝謝我將1434添加到servername,localhost:1434 \ MSSQLSERVER並且它可以正常工作,但外部服務器不起作用 – FDI