PHP如何調用MYSQL存儲過程?
2013-01-23 14:32:28
來源:
[導讀] php調用mysql存儲過程和函數的兩種方法存儲過程和函數是MySql5.0剛剛引入的。關于這方面的操作在PHP里面沒有直接的支持。但是由于Mysql PH...
php調用mysql存儲過程和函數的兩種方法存儲過程和函數是MySql5.0剛剛引入的。關于這方面的操作在PHP里面沒有直接的支持。但是由于Mysql PHP API的設計,使得我們可以在以前的PHP版本中的mysql php api中支持存儲過程和函數的調用。在php中調用存儲過程和函數的主要步驟 1。調用存儲過程的方法。 a。如果存儲過程有 IN/INOUT參數,聲明一個變量,輸入參數給存儲過程,該變量是一對,一個php變量(也可以不必,只是沒有php變量時,沒有辦法進行動態輸入),一個Mysql變量。 b。如果存儲過程有OUT變量,聲明一個Mysql變量。 mysql變量的聲明比較特殊,必須讓mysql服務器知道此變量的存在,其實也就是執行一條mysql語句。輸入 set @mysqlvar=$phpvar ; c。使用mysql_query()/mysql_db_query()執行mysql 變量聲明語句。 Mysql_query(“set @mysqlvar【=$pbpvar】”); 這樣,在mysql服務器里面就有一個變量,@mysqlar。如果時IN參數,那么其值可以有phpar傳入。 D。 如果時存儲過程。 1。執行 call procedure()語句。也就是mysql_query(“call proceduer([var1]…)”); 2. 如果有返回值,執行select @ar,返回執行結果。 Mysql_query(“select @var)” 接下來的操作就和php執行一般的mysql語句一樣了。可以通過mydql_fetch_row()等函數獲得結果。如果時函數。 直接執行 select function() 就可以了。 php調用mysql存儲過程和函數的方法一: $host=\”localhost\”; $user=\”root\”; $password=\”11212\”; $db=\”samp_db\”; $dblink=mysql_connect($host,$user,$password) or die(\”can’t connect to mysql\”); mysql_select_db($db,$dblink) or die(\”can’t select samp_db\”); $res=mysql_query(\”set @a=$password\”,$dblink); $res=mysql_query(\”call aa(@a)\”,$dblink); $res=mysql_query(\”select @a\”,$dblink); $row=mysql_fetch_row($res); echo $row[0]; php調用mysql存儲過程和函數方法二:此方法需要db_mysqli.dll的支持!調用帶有select語句的存儲過程就出現 PROCEDURE p can’t return a result set in the given context的錯誤。Google了半天,在mysql官網上找到一些說法,db_mysql的模塊不支持存儲過程調用,解決方法是用 db_mysqli。測試了一下,果然可以了。