当我用ouput参数调用存储过程时,mysql中出现错误代码1414

时间:2017-07-31 03:11:54

标签: php mysql codeigniter stored-procedures

我试图从我的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;
        }

    }

我得到的错误:

Database error:

1 个答案:

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

如果不起作用,请告诉我。