2014-02-17 2 views
0

У меня возникла проблема с функцией обновления. Этот код обновляет все строки в базе данных, и я хочу обновить только строку с именем пользователя входа. «Пароль» - это тот, который я вошел в систему, и я хочу заменить его на пароль3. Проблема в том, что пароль заменяет все строки (пароли) в моей базе данных.Функция обновления Codeigniter не работает

function edit_member() 
{ 
    $new_member_update_data = array(
       'password' => md5($this->input->post('password3')) 
       ); 
    $this->db->where('password',$this->input->post('password')); 
    $update = $this->db->update('memberships',$new_member_update_data); 
    return $update; 
} 
+0

Вам нужен уникальный идентификатор зарегистрированного пользователя, так что с помощью этого идентификатора вы можете контролировать, обновлять этого пользователя с помощью этого уникального идентификатора. –

+0

вы хотите заменить пароль в моем коде с id $ this-> db-> где ('password', $ this-> input-> post ('password')); – user3313651

+0

где (id, ????); Можете ли вы дать мне идею? – user3313651

ответ

0

Предположим, у вас есть авторизованы, то вы получите userId от сеанс правый ..? Так что используйте его здесь как

function edit_member() 
{ 
    $new_member_update_data = array(
      'password' => md5($this->input->post('password3')) 
      ); 
    $this->db->where('iUserId',$this->session->userdata('iUserId')); 
    $update = $this->db->update('memberships',$new_member_update_data); 
    return $update; 
} 

Учитывайте, что iUserId будет полем уникальным или даже auto increment поле.

+0

Когда я вошел в систему, я начинаю сеанс. В сеансе у меня есть уникальное имя пользователя. Но когда я пытаюсь вызвать его в функции edit_member, он дает мне [Call undefined method CI_Session :: read()] – user3313651

+0

Извините, что это будет 'userdata', а не' read'.and также заменить userId на 'username' bec bec as вы сказали, что он уникален – Gautam3164

+1

Он работает. Я заменяю чтение с помощью userdata. Спасибо вам всем – user3313651

0

Проверьте столбец пароль значение и $ this-> вход-> пост ('пароль') значение

function edit_member() 
{ 
     $password = md5($this->input->post('password3'); 
     $this->db->set('password',$password); 
     $this->db->where('password',$this->input->post('password')); 
     $this->db->where('id',$this->input->post('id')); 
     $update = $this->db->update('memberships'); 
     return $update; 
} 
+0

Если у любого другого пользователя есть тот же пароль, то он также заменит пароль других. –

0

Проверьте значение пароля, которое находится в БД, если оно зашифровано MD5, тогда вы должны передать зашифрованное значение пароля в предложение WHERE.

function edit_member() 
{ 
    $password = md5($this->input->post('password3'); 
    $this->db->set('password',$password); 
    $this->db->where('password',md5($this->input->post('password')); 
    $update = $this->db->update('memberships'); 
    return $update; 
} 
Смежные вопросы