2015-12-18 29 views
5

Używam funkcji z MySQL do zmiany hasła, ale operator AND nie działa poprawnie.AND operator nie działający w funkcji PHP za pomocą MySQL

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 

Rezultat: to pobiera 3 rzędy ale w moim stole user_id jest klucz podstawowy, więc daj mi właściwe rozwiązanie.

+0

Czy nie jest łatwiej zmienić przepustkę użytkownika za pomocą funkcji "Aktualizuj"? Lub brakuje mi czegoś – Perrykipkerrie

+0

@Perrykipkerrie To tylko aktualizacja pola, nie zmieniając hasła dla użytkownika mysql. –

+0

Skąd wiadomo, że pobiera 3 rzędy? nic nie przynosi. Czy to zapytanie zwraca jakiekolwiek dane? 'wybierz user_id z grupy temp_staff.tbl_user przez user_id posiadające count (user_id)> 1'' – Clay

Odpowiedz

2

WHERE user_id = user_id zawsze będzie się zgadzał (bez wartości null). Powinieneś zmienić nazwę parametru funkcji, aby nie powodował konfliktu z nazwą kolumny, lub też - aby kwalifikować odniesienie do kolumny tabeli.

Powiązane problemy