在php中调用带有输出参数的存储过程


Call stored procedrue with output parameter in php

如何通过php调用具有输出参数的存储过程?

$user="root";
$password="";
$database="phppractice";
mysql_connect('localhost:3306',$user,$password);
@mysql_select_db($database) or die( "Unable to select database");
$result = 10;
$query="call VerifyUserNPass(" . $user . "," . $result . ");";
$result = mysql_query($query);

没有给出正确的结果

调用语法

对于用提供MySQL接口的语言编写的程序,没有直接检索OUT结果的本机方法或调用CALL语句中的INOUT参数。要获取参数值,将用户定义的变量传递给CALL语句中的过程然后执行SELECT语句生成一个包含变量值。要处理INOUT参数,需要执行一条语句调用之前,调用将相应的用户变量设置为传递给过程的值。

所以你需要这样做

mysql_connect('localhost:3306',$user,$password);
mysql_select_db($database, $link);
mysql_query("CALL VerifyUserNPass('$user', @result)", $link);
$result = mysql_query("SELECT @result result", $link);
$row = mysql_fetch_assoc($result);
echo $row['result'];
mysql_free_result($result);

如果result是一个INOUT参数,那么您需要在SP调用之前设置一个值

mysql_query($link, "SET @result = 10");

为简洁起见,有意跳过所有错误检查