使用PHP調(diào)用MySQL的存儲(chǔ)過程
MySQL從5.0開始才引入存儲(chǔ)過程,反正以前做應(yīng)用的時(shí)候從沒碰過,不過現(xiàn)在因?yàn)橹饕鲀?nèi)部系統(tǒng),所以很多應(yīng)用都用到了存儲(chǔ)過程,當(dāng)然前臺(tái)有時(shí)候也需要調(diào)用MySQL存儲(chǔ)過程,PHP的MySQL Lib好像支持的不是很好,不過我搜索了些資料,雖然不多,但是還是嘗試的使用了,現(xiàn)在介紹一下方法,以便用到的朋友不用再頭疼。
lMySQL擴(kuò)展也是支持存儲(chǔ)過程的,不過只支持無返回結(jié)果的存儲(chǔ)過程,如果該存儲(chǔ)過程存在輸出,這個(gè)調(diào)用就會(huì)拋出一個(gè)錯(cuò)誤,具體錯(cuò)誤忘記了。調(diào)用方式很簡(jiǎn)單:
$rs = mysql_query("call func('str')", $conn); |
這個(gè)如果有返回結(jié)果,比如返回字符串,就會(huì)報(bào)錯(cuò),我現(xiàn)在找到的解決方法是使用MySQLi擴(kuò)展:
$rs = mysqli_query("call func('str')", $conn); |
這樣$rs就作為一個(gè)普通的MySQL Result來使用了,非常方便。
在調(diào)用存儲(chǔ)過程的時(shí)候,可能還會(huì)碰到一個(gè)問題,那就是可能會(huì)順序調(diào)用多個(gè)存儲(chǔ)過程,這樣同樣會(huì)報(bào)錯(cuò),解決方法就是在調(diào)用一個(gè)存儲(chǔ)過程并處理完成后,手動(dòng)關(guān)閉MySQL鏈接,然后再次connect,再調(diào)用另一個(gè)存儲(chǔ)過程再處理,需要調(diào)用多少個(gè)存儲(chǔ)過程,就重新連接多少次。
【編輯推薦】