1
好吧所以這裏是我的MySQL功能選擇到@var總是空
DELIMITER $$
CREATE DEFINER=`root`@`%` FUNCTION `password_reset_request`(spUsername VARCHAR(120)) RETURNS varchar(255) CHARSET utf8
BEGIN
DECLARE vcode VARCHAR(255);
DECLARE muid INTEGER;
SET vcode = "test";
select id into muid from scheme.users where [email protected] limit 1;
RETURN muid;
IF muid is null THEN
RETURN 'BADUSER';
ELSE
insert into `password_reset`(`uid`,`code`)
values (muid,vcode)
ON DUPLICATE KEY UPDATE
`code`=vcode;
RETURN vcode;
END IF;
END
問題我已經是muid
總是null
。我甚至用@muid
取代了所有的muid
,這並沒有改變結果。
當我運行select id from scheme.users where [email protected] limit 1;
並用相同的值替換@spUsername
我傳入該函數,它給了我正確的信息。
我也放在RETURN @spUsername
來驗證該變量設置是否正確,它是。
任何想法?可能做些愚蠢的事情。
表計劃
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(120) NOT NULL,
`email` varchar(200) NOT NULL,
`password` varchar(200) NOT NULL,
`vcode` varchar(120) NOT NULL,
`isverified` bit(1) DEFAULT b'0',
`verifydate` datetime DEFAULT NULL,
`date_created` datetime DEFAULT NULL,
`date_modified` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `username_UNIQUE` (`username`)
)
CREATE TABLE `password_reset` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`uid` int(11) NOT NULL,
`code` varchar(255) NOT NULL,
`iscompleted` bit(1) DEFAULT b'0',
`date_created` datetime DEFAULT NULL,
`date_modified` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uid_UNIQUE` (`uid`)
)
貌似增加的混合'READS SQL DATA'和改變'其中username = @ spUsername'到'其中,username = spUsername'做訣竅。謝謝。 –