$ stmt-> fetch()在尝试调用存储过程时返回false

时间:2016-01-05 23:13:51

标签: php mysql stored-procedures pdo

当我尝试使用PHP调用我的存储过程时,$stmt->fetch();由于某种原因返回false

我一直在查看this question以供参考,但我似乎无法让它正常工作。

我有以下PHP代码片段,它试图在我的MySQL数据库中调用存储过程:

$password = "pass";
$username = "name";

$stmt = $conn->prepare("CALL sp_login(:password,:username,@retval)");       
$stmt->bindParam(':password', $password, PDO::PARAM_STR);
$stmt->bindParam(':username',$username, PDO::PARAM_STR);       
$stmt->execute();

var_dump($stmt); //prints "object(PDOStatement)[2] public 'queryString' => string 'CALL sp_login(:password,:username,@retval)' (length=42)"

$res = $stmt->fetch();

var_dump($res); //prints "boolean false"

$retval = $res['retval'];

var_dump($retval); //prints null

我的存储过程代码:

DELIMITER @@
DROP PROCEDURE sp_login @@
CREATE PROCEDURE sp_login
(
IN in_password VARCHAR(255),
IN in_username VARCHAR(255),
OUT res INT)
BEGIN
    SELECT 1
    INTO res
    FROM användare
    WHERE lösenord = in_password
    AND användarnamn = in_username;
END @@ 
DELIMITER ; 

为什么$stmt->fetch();会返回false?当我直接在Mysql Workbench中调用该过程时,如下所示:

CALL sp_login('pass','name',@res);
SELECT @res;

按预期工作(返回1)。

0 个答案:

没有答案