1

問題があります。メール ID とアクティベーション キーを送信してユーザーをアクティベートするためのストアド プロシージャを作成しました。

これは 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 のままです (まったく更新されません)。

メールとアクティベーションがテーブルに保存されていることを確認するために、2 回以上調べました。

このクエリの何が問題になっていますか?

アップデート

これはスキーマ内の私のテーブル構造です

テーブルデザイン

よろしくお願いします。

テーブルを作成するための 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","usr1test@localhost","af41bfa3c9324f39fd82f84125967b38969662256cf8249e73e3bd2cef3928b5","OGE4Y2E2OWUtMmM2Mi00MjJkLWI0NTQtNzJkZDQ1OTcxNjUx",'M');
4

2 に答える 2

0

さて、私のテーブルのテーブルデータを見た後。キーの最後の文字の後に空白スペースがあるようです。

例 :

  1. -- 空白あり: ZWRhNzZmMzMtMmI2Ny00NDBlLTkxNTUtNmQ2MWIwYjg3MzA4_ (_ ? を参照)
  2. -- 空白なし: ZWRhNzZmMzMtMmI2Ny00NDBlLTkxNTUtNmQ2MWIwYjg3MzA4

そのため、MySQL の参照ポイント 1 と 2 は異なります。

これで私の問題が明確になることを願っています。

寄稿者の皆様ありがとうございました

于 2013-05-27T13:38:09.993 に答える