【发布时间】:2011-11-25 21:17:23
【问题描述】:
我正在尝试创建一个首先检查用户密码的例程,如果正确,它将从不同的表中返回一些值或连续更改一些值。
如果不进行您在 PHP 中处理的两个查询,这是否可能?首先调用密码,检查是否正确,然后允许用户更改名称。
这里是使用电子邮件和密码获取用户行的示例。
DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `get_user_info`(
IN in_Email VARCHAR(45),
IN in_Pass VARCHAR(45)
)
BEGIN
SELECT * FROM User WHERE Email = in_Email AND Pass = in_Pass;
END
这就是我目前所得到的:
DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `change_pass`(
in_Email VARCHAR(45),
in_PassOld VARCHAR(45),
in_PassNew VARCHAR(45)
)
BEGIN
SET @PassOld = (SELECT Pass From User WHERE Email = in_Email);
IF(@PassOld = in_PassOld) THEN
UPDATE User SET Pass = in_PassNew WHERE Email = in_Email;
END IF;
ENDND IF;
END
感谢大家的帮助!
【问题讨论】:
-
永远不要在数据库中明文存储密码。请改用盐渍哈希,原因请参见此处:stackoverflow.com/questions/2283937/…,操作方法请参见此处:stackoverflow.com/questions/3273293/…
标签: mysql stored-procedures if-statement