php呼叫mysql儲存過程和函式的方法(轉)

post0發表於2007-08-10
php呼叫mysql儲存過程和函式的方法(轉)[@more@]

儲存過程和函式是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() 就可以了。

$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]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-942527/,如需轉載,請註明出處,否則將追究法律責任。

相關文章