2014-01-30 18 views
2

到MSSQL服務器從PHP存儲過程這不起作用:進行調用使用PDO使用輸入Paramters

$dbh = new PDO("dblib:host=xxxx;dbname=xxx", "xxxxx", "xxxxx"); 

    $sth = $dbh->prepare("{exec wcweb_UserInfo(?)}"); 
    $sth->bindParam(1, $name); 
    $sth->execute(); 

    while($result = $sth->fetch(PDO::FETCH_ASSOC)) { 
    var_dump($result); 
    } 

這也不起作用:

$dbh = new PDO("dblib:host=xxxxx;dbname=xxxx", "xxxxx", "xxxx"); 

    $sth = $dbh->prepare("{call wcweb_UserInfo(?)}"); 
    $sth->bindParam(1, $name); 
    $sth->execute(); 

    while($result = $sth->fetch(PDO::FETCH_ASSOC)) { 
    var_dump($result); 
    } 

這是否工作:

$dbh = new PDO("dblib:host=xxxxx;dbname=xxxx", "xxxxx", "xxxx"); 

    $sth = $dbh->prepare("exec wcweb_UserInfo @userid=?"); 
    $sth->bindParam(1, $name); 
    $sth->execute(); 

    while($result = $sth->fetch(PDO::FETCH_ASSOC)) { 
    var_dump($result); 
    } 

我試過以上使用2,沒有和大括號等沒有工作我知道有人會說,好吧只是做它的華它有效嗎? ..問題是我正在使用sqlsrv_query庫將一個正在升級的應用程序從IIS服務器移植到Linux服務器。

應用程序中的所有數據庫調用均使用此方法寫入函數:{call wcweb_UserInfo(?)} ..沒有指定任何參數名稱,所以我將不得不修改每個數據庫調用以包含參數名稱。我的印象是,PHP5的PDO庫可以完成同樣的調用?

幫助!有什麼我做錯了嗎?還是僅僅是PDO不能進行這些調用?

+0

你會得到什麼錯誤信息? –

+0

沒有錯誤信息..多數民衆贊成在奇怪的事情。 –

回答

5

出於某種原因,這個工程:

$sth = $dbh->prepare("exec wcweb_UserInfo ?"); 
    $sth->bindParam(1, $name); 
    $sth->execute(); 

    while($result = $sth->fetch(PDO::FETCH_ASSOC)) { 
    var_dump($result); 
    } 

我也許能忍受這一點。任何人都知道爲什麼其他方法不起作用?這是圖書館的差異嗎?

+0

對不起,我錯過了你使用SQL Server的事實。 SQL Server不使用括號來存儲過程調用。 –