1

如何通过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);

它没有给出正确的结果。

4

1 回答 1

3

调用语法

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

因此你需要这样做

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);

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

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

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

于 2013-03-16T16:29:11.623 回答