múltiple donde condición codeigniter


¿Cómo puedo convertir esta consulta a active record?

"UPDATE table_user 
 SET email = '$email', last_ip = '$last_ip' 
 where username = '$username' and status = '$status'";

Traté de convertir la consulta anterior a:

$data = array('email' => $email, 'last_ip' => $ip);
$this->db->where('username',$username);
$this->db->update('table_user',$data);

¿Qué tal usar el estado where clausa?

# must i write db->where two times like this?
$this->db->where('username',$username);
$this->db->where('status',$status);

También intenté esto:

$this->db->where('username',$username,'status',$status);
Author: Kevin Bedell, 2012-05-10

6 answers

Puede usar una matriz y pasar la matriz.

Associative array method:
$array = array('name' => $name, 'title' => $title, 'status' => $status);

$this->db->where($array); 

// Produces: WHERE name = 'Joe' AND title = 'boss' AND status = 'active'

O si quieres hacer algo que no sea = comparison

$array = array('name !=' => $name, 'id <' => $id, 'date >' => $date);

$this->db->where($array);
 63
Author: gorelative,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-29 06:45:10

Sí, múltiples llamadas a where() es una forma perfectamente válida de lograr esto.

$this->db->where('username',$username);
$this->db->where('status',$status);

Http://www.codeigniter.com/user_guide/database/query_builder.html

 16
Author: IsisCode,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-08-11 22:08:57

Puede probar esta función para usos múltiples

function ManageData($table_name='',$condition=array(),$udata=array(),$is_insert=false){
$resultArr = array();
$ci = & get_instance();
if($condition && count($condition))
    $ci->db->where($condition);
if($is_insert)
{
    $ci->db->insert($table_name,$udata);
    return 0;
}
else
{
    $ci->db->update($table_name,$udata);
    return 1;
}

}

 2
Author: Nikunj Dhimar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-08-03 10:46:28

Prueba esto

$data = array(
               'email' =>$email,
               'last_ip' => $last_ip
            );

$where = array('username ' => $username , 'status ' => $status);
$this->db->where($where);
$this->db->update('table_user ', $data); 
 1
Author: Moyed Ansari,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-05-11 08:59:18

Es tarde para esta respuesta, pero creo que tal vez todavía puede ayudar, pruebo los dos métodos anteriores, utilizando dos condiciones donde y el método con la matriz, ninguno de esos funcionan para mí hice varias pruebas y la condición nunca se ejecutó, así que hice una solución, aquí está mi código:

public function validateLogin($email, $password){
        $password = md5($password);
        $this->db->select("userID,email,password");
        $query = $this->db->get_where("users", array("email" => $email));
        $p = $query->row_array();

        if($query->num_rows() == 1 && $password == $p['password']){  
            return $query->row();
        }

    }
 1
Author: GabouhSk8,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-08-12 17:45:52

Puedes usar ambas matrices de uso como:

$array = array('tlb_account.crid' =>$value , 'tlb_request.sign'=> 'FALSE' );

Y asignar directamente como:

$this->db->where('tlb_account.crid' =>$value , 'tlb_request.sign'=> 'FALSE');

Deseo ayudarte.

 1
Author: Ks Sjkjs,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-27 08:31:55