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() 就可以了。

 

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章