Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL-选择不按需要工作的变量_Mysql - Fatal编程技术网

MySQL-选择不按需要工作的变量

MySQL-选择不按需要工作的变量,mysql,Mysql,我在select INTO子句中遇到了一个问题- CREATE PROCEDURE `sp_user_signup`( IN gender int, IN dob varchar(50), IN location int, IN email varchar(100), IN password varchar(50), IN verify_uuid varchar(256), IN fb_user bool ) BEGIN D

我在select INTO子句中遇到了一个问题-

CREATE PROCEDURE `sp_user_signup`(
IN  gender      int,
IN  dob         varchar(50),
IN  location    int,
IN  email       varchar(100),
IN  password    varchar(50),
IN  verify_uuid varchar(256),
IN  fb_user     bool
)
BEGIN
DECLARE User_ID INT DEFAULT 0;
DECLARE ENABLED BOOL DEFAULT TRUE;

SELECT user_id INTO User_ID FROM tbl_user_login WHERE email = email;
CALL sp_debug(ENABLED,1,User_ID,(select concat_ws('',"UserID:", User_ID)));

IF User_ID = 0 THEN
<do something>
ELSE
<do something>
END IF
END
我的tbl_用户登录名的值为email-v。psk@gmail.com. 即使我通过电子邮件v。psk@gmail.com要设置SP,它总是进入IF块。 调试中的User_ID的值为零


提前感谢。

这不是你所期望的:

SELECT user_id INTO User_ID FROM tbl_user_login WHERE email = email;
问题是,你认为一封电子邮件是一个变量,另一封是一列。但是SQL无法读懂你的心思,所以两者都是专栏

在变量前面加上前缀,以区别于列。例如:

CREATE PROCEDURE `sp_user_signup`(
IN  v_gender      int,
IN  v_dob         varchar(50),
IN  v_location    int,
IN  v_email       varchar(100),
IN  v_password    varchar(50),
IN  v_verify_uuid varchar(256),
IN  v_fb_user     bool
)
BEGIN
DECLARE v_User_ID INT DEFAULT 0;
DECLARE ENABLED BOOL DEFAULT TRUE;

SELECT user_id INTO v_User_ID FROM tbl_user_login WHERE email = v_email;
CALL sp_debug(ENABLED,1,v_User_ID,(select concat_ws('',"UserID:", v_User_ID)));

IF v_User_ID = 0 THEN
<do something>
ELSE
<do something>
END IF
END