在php中调用存储过程和函数。 1。调用存储过程的方法。 a。如果存储过程有 IN/INOUT参数,声明一个变量,输入参数给存储过程,该变量是一对,一个php变量(也可以不必,只是没有php变量时,没有
a。如果存储过程有 IN/INOUT参数,声明一个变量,输入参数给存储过程,该变量是一对,一个php变量(也可以不必,只是没有php变量时,没有办法进行动态输入),一个Mysql变量。
海姹网(网址:http://www.seacha.com),标签:php调用mysql存储过程和函数的方法 , mysql,存储过程,mysql_query
b。如果存储过程有OUT变量,声明一个Mysql变量。mysql变量的声明比较特殊,必须让mysql服务器知道此变量的存在,其实也就是执行一条mysql语句。入set @mysqlvar=$phpvar ;
c。使用mysql_query()/mysql_db_query()执行mysql 变量声明语句。
海姹网(网址:http://www.seacha.com),标签:php调用mysql存储过程和函数的方法 , mysql,存储过程,mysql_query
mysql_query("set @mysqlvar【=$pbpvar】");
这样,在mysql服务器里面就有一个变量,@mysqlar。如果时IN参数,那么其值可以有phpar传入。
d。 如果时存储过程。
1。执行 call procedure()语句。
也就是mysql_query("call proceduer([var1]...)");
海姹网(网址:http://www.seacha.com),标签:php调用mysql存储过程和函数的方法 , mysql,存储过程,mysql_query
2. 如果有返回值,执行select @ar,返回执行结果。
mysql_query("select @var)"
接下来的操作就和php执行一般的mysql语句一样了。可以通过mydql_fetch_row()等函数获得结果。
如果时函数。 直接执行 select function() 就可以了。
$host="localhost";
海姹网(网址:http://www.seacha.com),标签:php调用mysql存储过程和函数的方法 , mysql,存储过程,mysql_query
$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);
海姹网(网址:http://www.seacha.com),标签:php调用mysql存储过程和函数的方法 , mysql,存储过程,mysql_query
echo $row[0];
海姹网(网址:http://www.seacha.com),标签:php调用mysql存储过程和函数的方法 , mysql,存储过程,mysql_query
1.2:PHP调用:
$db->query("CALL test.proc_test(@a)");
$res = $db->query("select @a");
$row = $res->fetch_array();
echo $row['@a'];
返回多个数据:
2.1:创建MySQL存储过程:
DELIMITER $$
DROP PROCEDURE IF EXISTS `test`.`proc_test` $$
CREATE PROCEDURE `test`.`proc_test` ()
海姹网(网址:http://www.seacha.com),标签:php调用mysql存储过程和函数的方法 , mysql,存储过程,mysql_query
BEGIN
select * from tbl_name;
END $$
DELIMITER ;
2.2:PHP调用:
$res=$db->query("CALL test.proc_test()");
while ($arr=$res->fetch_array())
echo $arr["Field"] ."<br/>";