时间:2021-07-01 10:21:17 帮助过:32人阅读
本文章介绍了关于在php中调用mysql5的存储过程,为什么只讲mysql5呢,原因很简单因为只有mysql5.0及以后的版本才支持存储过程哦,下面我们从入门及开始看。
1。调用存储过程的方法。
a。如果存储过程有 IN/INOUT参数,声明一个变量,输入参数给存储过程,该变量是一对,
一个变量(也可以不必,只是没有php变量时,没有办法进行动态输入),一个Mysql
变量。
b。如果存储过程有OUT变量,声明一个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. 如果有返回值,执行 @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]; |
从网上找的一个实例
代码如下 | |
/* Connect to a MySQL server */ $link = mysqli_connect( 'localhost', /* The host to connect to */ 'root', /* The user to connect as */ 'root', /* The password to use */ 'db_name'); /* The default database to query */ if (!$link) { printf("Can't connect to MySQL Server. Errorcode: %sn", mysqli_connect_error()); exit; } /* Send a query to the server */ if ($result = mysqli_query($link, "call se_proc('crm')")) { /* Fetch the results of the query */ while( $row = mysqli_fetch_array($result) ){ echo ($row[0]. "--------- SR. " . $row[1] . " "); } /* Destroy the result set and free the memory used for it */ mysqli_free_result($result); } /* Close the connection */ mysqli_close($link); ?> |
这个查找后会返回数据数据集哦