2015-12-18 6 views
5

パスワードを変更するのにMySQLの関数を使用していますが、AND演算子が正しく動作していません。AND演算子がMySQLを使用するPHP関数で動作していません

CREATE DEFINER = 'root'@'%' 
FUNCTION temp_staff.fn_changePassword(user_id INT, oldPassword VARCHAR(255), newPassword VARCHAR(255)) 
    RETURNS int(11) 
BEGIN 
update temp_staff.tbl_user set password = newPassword WHERE user_id = user_id AND password = oldPassword; 
RETURN 1; 
END 

結果:3行を取り出しますが、私のテーブルuser_idはプライマリキーですので、適切な解決策を教えてください。

+0

「更新」機能によるユーザーパスの変更は容易ではありませんか?または何かが足りなくなっています – Perrykipkerrie

+0

@Perrykipkerrieそれはちょうどフィールドの更新で、mysqlユーザーのパスワードは変更されません。 –

+0

3行をフェッチしていることをどのように知っていますか?それは何も取得していません。このクエリはデータを返しますか? (user_id)> 1を持つuser_idでuser_idを選択してください。 – Clay

答えて

2

WHERE user_id = user_idは常に(null以外の場合)trueと評価されます。関数名は、列名と競合しないように名前を変更するか、または表の列への参照を表修飾してください。

関連する問題