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

解决方案 »

  1.   

    没人做过么?是不是mysql接口的问题,我换成mysqli 第2句可以了,但是第3句就总是返回false
    ,路过的大侠们,帮看看。
      

  2.   

    尝试这样
    $res =mysql_quer("call updadmps('$oldPsw','$newPsw',@res)",$db);
      

  3.   

    不行的。用mysql接口可能不支持吧,我改用mysqli后发现执行
    3)  $res =mysqli_query($db,"select @res;"); 时出现
    Query failed: Lost connection to MySQL server during query  错误,
    分析可能是执行存储过程时出错了,我将存储过程中的select 语句去掉就可以返回@res,请高手再看看存储过程有什么问题呢?