2013-02-15 58 views
0

試圖調用MSSQL存儲過程。 過程基本上是這樣的: USE [數據庫] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO使用PDO不工作調用MSSQL存儲過程

ALTER過程[DBO] [StoredProcedure的] (@username VARCHAR(10))作爲

SELECT * FROM '表名' 其中userfield = @username


PHP Code 
$username = 'username'; 
try { 
    $connection = new PDO('odbc:Driver={SQL Server Native Client 10.0};Server={SERVER};Database={DATABASE};Uid={USER};Pwd={PASSWORD}', 'USER', 'PASSWORD'); 
} 
catch(PDOException $e) { 
    echo 'Connection Failed :'.$e->getMessage().PHP_EOL; 
    echo 'Please contact the application administrator'; 
} 

$stm = $connection->prepare("CALL STOREDPROCEDURE(?)"); 
$stm->bindParam(1, $username, PDO::PARAM_STR, 10); 
$stm->execute(); 
$results = $stm->fetchAll(); 
var_dump($results); 

輸出結果是:array(0){} 此數據庫中有大量數據。

我知道連接數據庫的工作原理,當我更改連接失敗時數據庫的名稱。

但是,當我更改我的(調用ADanE1Username)行中的存儲過程的名稱時,結果中沒有任何更改。

任何幫助,將不勝感激。謝謝。

+1

你有沒有運行該代碼在運行SQL事件探查器對目標數據庫,以確保查詢/程序實際上是射擊? – 2013-02-15 17:28:57

+0

我沒有。我以前也沒有使用過SQL Profile。我會看看,看看會發生什麼。我想知道該過程是否正在解僱,因爲我可以在代碼中更改其名稱,並且在我的結果中不會發生任何事情,或者在Eclipse調試器中指出什麼是錯誤的。 – guppster01 2013-02-15 17:49:50

+0

當我運行探查器時,我看到一個SP:Starting EventClass。文本數據讀取:exec [sys] .sp_sproc_columns_110 N'STOREDPROCEDURE',@ odbcver = 3。我應該期望exec之後的信息成爲正確存儲過程數據庫的途徑嗎?再次在這個菜鳥。我不知道這個價值會有什麼期望。 – guppster01 2013-02-15 19:52:47

回答

2

與SQL Server必須使用

$stm = $connection->prepare("EXEC STOREDPROCEDURE(?)"); 

EXECUTE (Transact-SQL)

+0

感謝您的快速響應。我試過了,得到相同的結果。 – guppster01 2013-02-15 17:42:32