Posted by & filed under Database.

存储过程和函数是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];

3 Responses to “PHP中操作mysql执行存储过程”

  1. 王伟

    松啊,知道我是谁吗?^_^
    我发现你的这个空间真的很好耶,很简约,无论网速多慢,唰就进来啦!
    这里面的东西太丰富啦,^_^ 这个确实不错,我也想申请一个这样的空间,能不能教我怎么搞啊?

    [Reply]

  2. LiuMin

    我的BLOG也是 wordpress 构建的 ,同道中人
    在网上找了那么多 关于PHP调用存储过程的
    写的都是同一篇文章,你的正规多了
    也就你把错别字改过来了。

    [Reply]

Leave a Reply

  • (will not be published)