2012-12-22 81 views
0

當我的本地計算機上都連接了php和sql server時,我已經連接了php。將本地主機上的Php腳本連接到在線sql Server數據庫

但是當我的PHP腳本在本地計算機上運行時,我需要連接一個SQL Server Web數據庫。

我在我的PHP擴展中添加了擴展php_pdo_sqlsrv_54_ts.dllphp_sqlsrv_54_ts.dll

爲了與本地主機上的SQL Server連接,我還需要一個SQL Server本地客戶端驅動程序,我已經安裝了,但是這樣做是否也必須對我的SQL Server Web數據庫連接做任何事情?

當我運行PHP腳本的腳本需要一些時間來執行,有時甚至給出了一個錯誤:

SQLSTATE [08001]:[微軟] [SQL Server本機客戶端11.0] TCP 提供商:一連接嘗試失敗,因爲連接的方沒有 一段時間後沒有正確答覆或連接建立 失敗,因爲連接的主機沒有反應。 1

我的連接腳本是

$serverName = "***.db.*****.********.com"; 
    try{ 
     $conn = new PDO("sqlsrv:server=$serverName;Database=*****", "***UserName***", "***PWD***"); 
     $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    } 
    catch(Exception $e){ 
     die(print_r($e->getMessage())); 
    } 
+0

你確定數據庫服務器可以從外部訪問?在大多數情況下這不是 – povilasp

+0

我檢查它..就是這樣,我這樣做對嗎? –

回答

0
  1. 上$服務器名試圖給服務器的IP地址。
  2. 確定服務器是否是通過發送ping請求 像ping serveripping 192.168.100.12

訪問過試試這個..

try { 
    $hostname = "host";   //host 
    $dbname = "dbname";   //db name 
    $username = "user";   // username like 'sa' 
    $pw = "pass";    // password for the user 

    $dbh = new PDO ("mssql:host=$hostname;dbname=$dbname","$username","$pw"); 
    } catch (PDOException $e) { 
    echo "Failed to get DB handle: " . $e->getMessage() . "\n"; 
    exit; 
    } 
    $stmt = $dbh->prepare("SELECT * FROM table"); 
    $stmt->execute(); 
    while ($row = $stmt->fetch()) { 
    print_r($row); 
    } 
    unset($dbh); unset($stmt); 

你可以找到更多的例子在這裏http://php.net/manual/en/ref.pdo-dblib.php

+0

已經試過這個相同的錯誤出現 –

+0

@ user1923567我編輯了答案。 –

+0

當我使用您的代碼時,出現以下錯誤: *無法獲得數據庫句柄:找不到驅動程序* 正在談論哪個驅動程序 –

0

$康恩=新PDO( 「SQLSRV:服務器= $服務器名;數據庫= *」, 「DBNAME」,「PWD「); 相反DB的名字,這裏的用戶名應該在的地方來

+0

對不起,這是用戶名..我現在正在編輯它 –

相關問題