我试图从我的codeigniter代码调用存储过程(SP),但是我在Mysql SP中定义的参数之一是OUTPUT参数,它在调用SP时给我一些问题。有没有人知道从涉及OUTPUT参数的PHP代码调用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;
}
}
我得到的错误:
答案 0 :(得分:0)
存储过程中存在错误。请检查下面描述的正确定义。
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);
如果不起作用,请告诉我。