mysql - 如何修复此程序?
问题描述
这是我第一次创建 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
解决方案
你希望你的程序返回一些东西,但你没有在其中使用'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
也许您可以考虑在您的应用程序中而不是在数据库中进行此检查
推荐阅读
- python - 无法在opencv中保存视频
- javascript - .NET Core Dropzone 未收到内部服务器错误
- angular - Angular:HttpClientModule 导入错误(无法解析为 NgModule 类)
- sql - 在 SQL Server T-SQL 中更新追加重复记录
- android - 任何处理器都无法识别 Kapt 选项
- php - 为没有容器数组的 ArrayAccess 实现 Iterator 接口
- javascript - 如果现金招标>总金额,如何保持总余额
- python - 我无法理解 python 中的对象操作
- php - 有没有办法在加入后获取表 PK id 值而不是外键值?代码点火器
- django - 如何在 Django 中使用 Sweetify