2013-02-08 56 views

回答

0

爲什麼不按名稱綁定參數?

$stmt = $pdo->prepare("SELECT * FROM mytable WHERE n = :num AND z = :zone"); 

$stmt->execute(array("zone" => $zone, "num" => $num)); 

順便說一下,我更喜歡簡單地通過傳遞一個數組來傳遞參數execute()。沒有必要使用bindParam(),並且沒有好處。有參數類型說明符,但是如果您閱讀PDO代碼,這些代碼將被忽略,至少在PDO_MySQL驅動程序中。


重新評論:好的,現在我明白你的問題了。

不,沒有辦法查詢一個MySQL存儲過程來知道它期望什麼參數,或者你將如何在proc中使用它們。你必須至少知道你自己的代碼。

+0

因爲訂單很重要。如果存儲過程被定義爲具有輸入變量'SomeProc(一個varchar(2),兩個varhcar(2))',即使我使用bindParams按名稱綁定(例如'bindParam(「one」,...) ,如果它們放入準備語句的順序與它們在存儲過程中出現的順序不同,它們將作爲錯誤參數發送。在C#中(使用SqlCommand),您不需要知道參數的順序,SqlCommand對象自己處理它。 – 2013-02-09 20:52:54

相關問題