当我尝试使用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)。