本文章介绍了关于在php中调用mysql5的存储过程,为什么只讲mysql5呢,原因很简单因为只有mysql5.0及以后的版本才支持存储过程,下面我们从入门及开始看.
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)
- ordie("can'tconnecttomysql");
- mysql_select_db($db,$dblink)
- ordie("can'tselectsamp_db");
- $res=mysql_query("set@a=$password",$dblink);
- $res=mysql_query("callaa(@a)",$dblink);
- $res=mysql_query("select@a",$dblink);
- $row=mysql_fetch_row($res);
- echo$row[0];
从网上找的一个实例,代码如下:
- <?php
- /*ConnecttoaMySQLserver*/
- $link=mysqli_connect(
- 'localhost',/*Thehosttoconnectto*/
- 'root',/*Theusertoconnectas*/
- 'root',/*Thepasswordtouse*/
- 'db_name');/*Thedefaultdatabasetoquery*/
- if(!$link){
- printf("Can'tconnecttoMySQLServer.Errorcode:%sn",mysqli_connect_error());
- exit;
- }
- /*Sendaquerytotheserver*/
- if($result=mysqli_query($link,"callse_proc('crm')")){
- /*Fetchtheresultsofthequery*/
- while($row=mysqli_fetch_array($result)){
- echo($row[0]."---------SR.".$row[1]."
- ");
- }
- /*Destroytheresultsetandfreethememoryusedforit*/
- mysqli_free_result($result);
- }//phpfensi.com
- /*Closetheconnection*/
- mysqli_close($link);
- ?>
这个查找后会返回数据数据集.