0

私はこのmysqlエラーを受け取ります:

1064-SQL構文にエラーがあります。1行目の「@password)」の近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください。

これは以下のSQL用です:

Update Teacher 
SET TeacherSalt=@salt, TeacherPassword=SHA1(TeacherSalt @password)

このSQLが機能するようにするには、何を変更する必要がありますか?

アップデート:

パスワードの塩漬けを手伝う必要があります。TeacherPassword列とTeacherSalt列が次のようになっている場合:

TeacherPassword     TeacherSalt

cricket01
sachin01
priggy02

次に、このステートメントを実行した後:

Update Teacher 
SET    TeacherSalt = @salt, 
       TeacherPassword = SHA1(CONCAT(@password,@salt))

次に、TeacherPassword列とTeacherSalt列の両方が空白行を提供します。パスワードを正常にソルトするにはどうすればよいですか?

4

4 に答える 4

2

こんな感じじゃないですか?(の列削除しますTeacherSaltSHA1

Update Teacher 
SET    TeacherSalt = @salt, 
       TeacherPassword = SHA1(CONCAT(@password,@salt))

SQLFiddleの例

于 2012-08-08T12:03:50.213 に答える
0

塩とパスワードを接着したいと思います。したがって、たとえば:

UPDATE Teacher 
SET TeacherSalt = @salt, TeacherPassword = SHA1(CONCAT(@salt, @password))
于 2012-08-08T12:14:47.837 に答える
0

構文がオフになっているようです。フィールドに余分なものTeacherSaltがあります。Password

Update Teacher 
SET TeacherSalt=@salt, TeacherPassword=SHA1(@password)

あなたのコメントに基づいて、あなたはこれが欲しいように聞こえます:

Update Teacher 
SET TeacherSalt=@salt, TeacherPassword=SHA1(CONCAT(@password,@salt))
于 2012-08-08T12:04:01.227 に答える
0

問題は、文字列を連結する必要があることだと思います。

Update Teacher  
SET TeacherSalt=@salt, TeacherPassword=SHA1(@salt + @password)
于 2012-08-08T12:04:40.493 に答える