我试图从我的 codeigniter 代码中调用存储过程 (SP),但我在 Mysql SP 中定义的参数之一是 OUTPUT 参数,该参数在调用 SP 时给我带来了一些问题。有谁知道从 PHP 代码中调用带有 OUTPUT 参数的 Sp 的正确方法。代码如下:
MySql:
DROP PROCEDURE IF EXISTS usp_check_user_exist;
DELIMITER $$
CREATE PROCEDURE usp_check_user_exist
( IN email VARCHAR(200),
OUT result BIT(1) )
BEGIN
SET result = EXISTS(SELECT 1 FROM tbl_users WHERE user_email = email
LIMIT 1);
SELECT result;
END
Codeigniter/php:
public function check_email($email) {
$data = array(
'email' => $email,
'@result' => @result
);
$sp = "CALL usp_check_user_exist (?,?)";
$result = $this->db->query($sp, $data);
if($result) {
return TRUE;
} else {
return FALSE;
}
}
我得到的错误:
最佳答案
您的存储过程有错误。请检查下面描述的正确定义。
DELIMITER $$
DROP PROCEDURE `usp_check_user_exist`$$
CREATE PROCEDURE `usp_check_user_exist`(IN email VARCHAR(200))
BEGIN
DECLARE result TINYINT DEFAULT 0;
SET result = EXISTS(SELECT 1 FROM tbl_users WHERE user_email = email 1);
SELECT result;
END$$
DELIMITER ;
此外,如果您想使用当前的存储过程,而不是从 PHP 使用语句调用,如下所述。
call usp_check_user_exist('example@domain.com',@out);
如果不起作用请告诉我。
关于php - 当我使用输出参数调用存储过程时,mysql 中出现错误代码 1414,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45406945/