Tengo un problema al actualizar los campos en la base de datos a través del método de actualización codeigniter

Mi controlador:

      $database = array(
        'last_location' => $url[5]."-".$url[6],
        'last_date_location' => $url[3]." ".$url[4],
      );

      $user = $this->API_model->get_user($url[0]);

      print_r($user);

      if ($this->db->update('user', $database , $user['id']) === true) {
        print_r($database);
        echo "MEI_TRUE";
      }else {
        echo "MEI_FALSE";
      }

El navegador devuelve MEI_TRUE, lo que significa que la base de datos se actualizó correctamente, pero cuando reviso la base de datos en phpmyadmin nada cambió :(

¿Cuál es el problema?

1
Masoud Tavakkoli 16 jun. 2017 a las 13:03

3 respuestas

La mejor respuesta

Debería funcionar ahora.

$database = array(
        'last_location' => $url[5]."-".$url[6],
        'last_date_location' => $url[3]." ".$url[4],
      );

      $user = $this->API_model->get_user($url[0]);

      print_r($user);
      $query = $this->db->where('id',$user['id'])
                        ->update('user', $database);
      if ($query) {
        print_r($database);
        echo "MEI_TRUE";
      }else {
        echo "MEI_FALSE";
      }
1
molagbal 16 jun. 2017 a las 10:17

La cuestión es: ¿qué quieres actualizar? el tercer parámetro de la consulta de actualización le permite habilitar la cláusula where como una cadena

Aunque tu ejemplo es bastante peligroso, prueba lo siguiente

if ($this->db->update('user', $database , "id = ".$user['id']) === true) 
{
    print_r($database);
    echo "MEI_TRUE";
}
else 
{
    echo "MEI_FALSE";
}

La mejor manera sería (como ya mencionó Dhanesh):

$blnUpdateSuccess = $this->db->where("id", $user['id'])->update("user",$database);

if ($blnUpdateSuccess) 
{
    print_r($database);
    echo "MEI_TRUE";
}
else 
{
    echo "MEI_FALSE";
}

Para más información, lea la Documentación aquí

1
sintakonte 16 jun. 2017 a las 10:18

¿Puedes probar algo como a continuación,

$database = array(
        'last_location' => $url[5]."-".$url[6],
        'last_date_location' => $url[3]." ".$url[4],
      );
$this->db->where('id', $user['id']);
$this->db->update('user', $database );

Espero que esto te ayudará

1
Dhanesh 16 jun. 2017 a las 10:13