2013-07-26 169 views
0

我剛剛使用IIS和Microsoft SQL服務器安裝了一個PHP服務器,它們都運行在同一臺Windows Server 2008計算機上。我在PHP上安裝了Microsoft的SQLSRV驅動程序,因爲我想在PHP中使用我的SQL Server數據庫。SQLSRV查詢不起作用

連接到SQL Server實例在代碼中運行良好,但是當我嘗試執行查詢時,它不再工作。我嘗試從php代碼運行的相同查詢正在其他程序中工作,例如我的SQL Server管理器。即使像'USE dbname'這樣簡單的命令也不起作用,但它們可以從SQL Server管理器中工作。

這是我正在使用的PHP代碼。當我運行代碼說它連接,然後在選擇數據庫錯誤。

$conn = sqlsrv_connect("TRANSIP-VPS\SQLEXPRESS"); 
if($conn === false) 
    { die(FormatErrors(sqlsrv_errors())); } 
echo "Connected "; 
     $selectDB = sqlsrv_query($conn, "USE Vitare"); 
     if($selectDB === false){ 
     die("ERror selecting DB"); 
     } 

$tsql = "CREATE TABLE Persons 
(
PersonID int, 
LastName varchar(255), 
FirstName varchar(255), 
Address varchar(255), 
City varchar(255) 
)"; 
    $getProducts = sqlsrv_query($conn, $tsql); 
    if ($getProducts === false) 
     { 
     echo "Error creating table"; 
     die(FormatErrors(sqlsrv_errors())); } 
echo "stuff"; 
$row = sqlsrv_fetch_array($getProducts, SQLSRV_FETCH_ASSOC); 
echo $row['username']; 

當我運行sql_srverrors(),而不是印刷「錯誤選擇DB」,它只是給了我所說的「陣」,僅此而已,沒有錯誤消息,什麼都沒有。

+1

是否表模式'Vitare'存在嗎? – Raptor

+0

是的,它出現在SQL Server管理的數據庫中 – raj1v

+0

嘗試'使用Vitare; CREATE TABLE ...'或'CREATE TABLE Vitare.dbo.Persons ...'。 –

回答

0

嘗試使用此方法連接到數據庫:

$serverName = "TRANSIP-VPS\SQLEXPRESS"; 
$connectionInfo = array("Database"=>"Vitare"); 
$conn = sqlsrv_connect($serverName, $connectionInfo); 
+0

我會嘗試它,但我不認爲它會起作用,因爲其他簡單的命令如Select * FROM Vitare.dbo.users也不起作用。 – raj1v

+0

連接被連接到一個數據庫,我認爲'sqlsrv_query($ conn,「USE Vitare」);'不起作用。上面的代碼連接到數據庫。 –

+0

現在它甚至不說連接了。我只是再次給我錯誤數組。所以數據庫Vitare可能有問題。但是這很奇怪,因爲數據庫在SQL服務器管理和我寫的C#腳本中工作正常。 – raj1v