【问题标题】:Stored Procedure if condition not working MYSQL存储过程如果条件不起作用 MYSQL
【发布时间】:2020-04-06 04:05:54
【问题描述】:

(使用 Amazon RDS 中的 MySQL 数据库)

程序 注册

    CREATE DEFINER=`communitybd`@`%` PROCEDURE `signup`(
    fullname VARCHAR(254), 
    phone VARCHAR(20),
    email VARCHAR(254),
    pass VARCHAR(254)
    )
    BEGIN
    DECLARE output int;

    IF (SELECT COUNT(fullname) FROM users WHERE email = email or phone = phone) >= 1 THEN
        SET output = 0;
    ELSE
        INSERT INTO users(`fullname`,`phone`,`email`,`password`,`createdat`) 
          VALUES(fullname,phone, email, pass,CURRENT_TIMESTAMP());
        SET output =  1; 
    END IF;
    SELECT output;
    END

通话

CALL `communitybd`.`signup`('Himel Rana', '+8801966584755', 'another@himelrana-swe.com', 'password111');

它仅适用于第 1 次。但是,当我尝试使用不同的电话添加另一个用户并通过电子邮件返回 0 时,它应该返回 1 如果条件不起作用,你能帮我吗? 我已经尝试过使用if exists 也不行

【问题讨论】:

    标签: mysql mysql-workbench amazon-rds


    【解决方案1】:

    我正在回答我自己的问题,因为当我写这个问题时,我突然解决了这个问题。

    我们应该在查询中提到表名

    这一行:

    IF (SELECT COUNT(fullname) FROM users WHERE email = email or phone = phone) >= 1 THEN
    

    应该如下所示:

    IF (SELECT COUNT(fullname) FROM users WHERE users.email = email or users.phone = phone) >= 1 THEN
    

    希望这能帮助其他犯这种错误的人。

    【讨论】:

      猜你喜欢
      • 2020-11-10
      • 2020-06-15
      • 2014-12-31
      • 1970-01-01
      • 2012-04-07
      • 2021-10-02
      • 2019-06-28
      • 1970-01-01
      • 2018-03-28
      相关资源
      最近更新 更多