Вопрос по – несколько, где условие codeigniter

25

Как я могу преобразовать этот запрос в активную запись?

<code>"UPDATE table_user 
 SET email = '$email', last_ip = '$last_ip' 
 where username = '$username' and status = '$status'";
</code>

Я пытался преобразовать запрос выше в:

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

Как насчет использования статуса где Клауса?

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

Я также попробовал это:

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

Ваш Ответ

7   ответов
1

Вы можете использовать как использовать массив, как:

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

и прямое назначение как:

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

Я хочу помочь тебе.

1

уже поздно для этого ответа, но я думаю, что, возможно, все еще может помочь, я пробую оба метода выше, используя два условия, где и метод с массивом, ни один из этих способов не работает для меня, я сделал несколько тестов, и условие никогда не выполнялось Итак, я сделал обходной путь, вот мой код:

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

Попробуй это

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

$where = array('username ' => $username , 'status ' => $status);
$this->db->where($where);
$this->db->update('table_user ', $data); 
Error: User Rate Limit Exceeded Zulkifli Said
16

Да, множественные вызовы where () - вполне допустимый способ добиться этого.

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

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

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
2

Вы можете попробовать эту функцию для многоцелевого

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;
}

}

64

Вы можете использовать массив и передать массив.

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'

Or if you want to do something other than = comparison

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

$this->db->where($array);
0
    $query = $this->db->select('*')
        ->where(['email' => $email, 'status' => $status])
        ->get('mp_user');
    $result = $query->row_array();
    return $result;
в моем ответе нет необходимости добавлять какие-либо другие переменные, такие как массив, вы можете напрямую умножить условие where в предложении where.
Не могли бы вы изменить свой ответ, чтобы объяснить, почему ваше решение направлено на исходный вопрос? Это помогло бы оригинальному постеру и любому, кто придет в будущем.

Похожие вопросы