首页 > 解决方案 > 如何修复此程序?

问题描述

这是我第一次创建 sql 过程,我需要一些帮助。我要做的是创建一个程序,如果用户正确输入了他的电子邮件和密码,则返回真或假

DELIMITER $$

CREATE PROCEDURE login(IN email varchar(50), IN password varchar(30))
BEGIN
    DECLARE @email VARCHAR(50);
    DECLARE @password VARCHAR(50);
    IF((SELECT COUNT(id) FROM users WHERE email = @email AND password = @password) = 0, 'true', 'false');
END$$

DELIMITER ;

您的 SQL 语法有错误;查看与您的 MariaDB 服务器版本相对应的手册,了解在 '@email VARCHAR(50); 附近使用的正确语法;
声明@password VARCHAR(50);
IF((SELECT COUNT(id' 在第 3 行

这是错误消息,我正在使用 phpMyAdmin

标签: mysqlsql

解决方案


你希望你的程序返回一些东西,但你没有在其中使用'return'

https://wiki.ispirer.com/sqlways/mysql/techniques/return-value-from-procedure

除此之外,您的代码看起来很容易受到 SQL 注入的影响

https://security.stackexchange.com/questions/68701/how-does-stored-procedure-prevents-sql-injection

也许您可以考虑在您的应用程序中而不是在数据库中进行此检查


推荐阅读