MySQL好像從5.0開始才引入存儲過程,反正以前做應用的時候從沒碰過,不過現在因為主要作內部系統,所以很多應用都用到了存儲過程,當然前台有時候也需要調用MySQL存儲過程,PHP的MySQL Lib好像支持的不是很好,不過我搜索了些資料,雖然不多,但是還是嘗試的使用了,現在介紹一下方法,以便用到的朋友不用再頭疼。
lMySQL擴展也是支持存儲過程的,不過只支持無返回結果的存儲過程,如果該存儲過程存在輸出,這個調用就會拋出一個錯誤,具體錯誤忘記了。調用方式很簡單:
$rs = MySQL_query("call func('str')", $conn);
這個如果有返回結果,比如返回字符串,就會報錯,我現在找到的解決方法是使用MySQLi擴展:
$rs = MySQLi_query("call func('str')", $conn);
這樣$rs就作為一個普通的MySQL Result來使用了,非常方便。
在調用存儲過程的時候,可能還會碰到一個問題,那就是可能會順序調用多個存儲過程,這樣同樣會報錯,解決方法就是在調用一個存儲過程並處理完成後,手動關閉MySQL鏈接,然後再次connect,再調用另一個存儲過程再處理,需要調用多少個存儲過程,就重新連接多少次。
因為我不是很了解MySQL擴展,以上純屬經驗總結,如果有哪位高手知道來龍去脈,歡迎指點。