我有一個問題,我創建了一個存儲過程,通過發送他們的電子郵件ID和激活密鑰的MySQL更新查詢全成,但價值觀不改變在所有
這是SQL語法(在MySQL)來激活用戶
DELIMITER $$
CREATE PROCEDURE `dbname`.`sp_userActivate` (
IN email VARCHAR(140),
IN ac VARCHAR(64)
)
BEGIN
SET SQL_SAFE_UPDATES=0;
UPDATE user SET activated = 1
WHERE user.email = email AND
user.activation_key=ac;
commit;
END
當我執行的語法,它的成功執行,但是當我走在表一看,激活仍值保持= 0(不更新的話)
我已經比看起來更兩次確保電子郵件和激活與存儲在表中相等,
這個查詢有什麼問題?
UPDATE
這是您的幫助
感謝架構我的表結構。
SQL語句創建表
CREATE TABLE IF NOT EXISTS `db`.`user` (
`no` INT(11) NOT NULL AUTO_INCREMENT ,
`username` VARCHAR(140) NOT NULL ,
`password` VARCHAR(128) NOT NULL ,
`firstname` VARCHAR(300) NOT NULL ,
`lastname` VARCHAR(300) NULL DEFAULT NULL ,
`email` VARCHAR(140) NOT NULL ,
`pepper` CHAR(128) NOT NULL ,
`activation_key` VARCHAR(64) NULL DEFAULT NULL ,
`gender` CHAR(1) NULL DEFAULT NULL ,
`activated` CHAR(1) CHARACTER SET 'latin1' COLLATE 'latin1_bin' NULL DEFAULT '0' ,
PRIMARY KEY (`no`) ,
UNIQUE INDEX `username` (`username` ASC) ,
UNIQUE INDEX `email` (`email` ASC) ,
INDEX `user_firstname_idx` (`firstname` ASC) ,
INDEX `user_lastname_idx` (`lastname` ASC))
對於示例中行
insert into
user(username, password,firstname, lastname, email,pepper,activation_key,gender)
values("usr1test","c781bf44a464a5946ef36a7250f5504388914bbf6287fabaf938472f46c413d71cd7bf2b3077eeac8675419d5f022ff3652ba7e13e8","user1","test","[email protected]","af41bfa3c9324f39fd82f84125967b38969662256cf8249e73e3bd2cef3928b5","OGE4Y2E2OWUtMmM2Mi00MjJkLWI0NTQtNzJkZDQ1OTcxNjUx",'M');
我已刪除我的回答,基於這一點,你可以刪除'SET SQL_SAFE_UPDATES = 0;'和'COMMIT;'並嘗試再次執行。 –
嗨@JW웃再次感謝您的安撫,我嘗試過這種方法,但仍然無法正常工作。我認爲activation_key值有問題。 – randytan
你能給樣品記錄嗎? –