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

标签 php mysql codeigniter stored-procedures

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

    }

我得到的错误:

Database error:

最佳答案

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

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/

相关文章:

javascript - Google 登录扩展 token

php - MySQL 使用连接进行查询搜索

MySQL 并仅使用一些结果

php - 从 Microsoft Word 发布博客时出现格式错误

php - 错误 0x2006D002 :BIO routines:BIO_new_file:system lib with PHP on Windows

mysql - 为什么 sql 数据库不允许为所有查询创建函数而不是在调用程序中构造 sql 字符串?

mysql - 如何选择今天的最后一个条目 + 过去 6 天的数据

php - MySQL 查找下一个 id(下一张图片)

mysql - Codeigniter SELECT 将检查超过 MAX_JOIN_SIZE 行

php - php中有 "map"函数吗?