【问题标题】:error code 1414 occurs in mysql when i call stored procedure with ouput parameter当我使用输出参数调用存储过程时,mysql中出现错误代码1414
【发布时间】:2018-01-06 11:57:07
【问题描述】:

我正在尝试从我的 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

代码点火器/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;
        }

    }

我得到的错误:

【问题讨论】:

    标签: php mysql codeigniter stored-procedures


    【解决方案1】:

    您的存储过程中有错误。请检查下面描述的正确定义。

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

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

    【讨论】:

    • 谢谢Shyam Shingadiya。您的解决方案很有帮助。
    猜你喜欢
    • 2018-07-08
    • 2018-02-09
    • 1970-01-01
    • 2018-11-13
    • 1970-01-01
    • 2021-10-20
    • 1970-01-01
    • 1970-01-01
    • 2013-10-23
    相关资源
    最近更新 更多