如何将此查询转换为有效记录?
"UPDATE table_user
SET email = '$email', last_ip = '$last_ip'
where username = '$username' and status = '$status'";
我尝试将上面的查询转换为:
$data = array('email' => $email, 'last_ip' => $ip);
$this->db->where('username',$username);
$this->db->update('table_user',$data);
如何使用where clausa状态?
# must i write db->where two times like this?
$this->db->where('username',$username);
$this->db->where('status',$status);
我也试过这个:
$this->db->where('username',$username,'status',$status);
答案 0 :(得分:66)
您可以使用数组并传递数组。
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'
或者,如果您要执行=比较
以外的操作$array = array('name !=' => $name, 'id <' => $id, 'date >' => $date);
$this->db->where($array);
答案 1 :(得分:16)
是的,多次调用where()是完全有效的方法。
$this->db->where('username',$username);
$this->db->where('status',$status);
http://www.codeigniter.com/user_guide/database/query_builder.html
答案 2 :(得分: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;
}
}
答案 3 :(得分: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);
答案 4 :(得分: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();
}
}
答案 5 :(得分:1)
你可以使用两个使用数组:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int n,i,*data;
scanf("%d", &n);
data=(int *)malloc(sizeof(int)*n);//data[size]
for(i=0;i<n;i++)
{
scanf("%d", &data[i]);
}
for(i=0;i<=n;i++)
printf("%d",data[n]);
printf("\n");
return 0;
}
并直接分配如:
$array = array('tlb_account.crid' =>$value , 'tlb_request.sign'=> 'FALSE' );
我希望能帮助你。
答案 6 :(得分:1)
$wherecond = "( ( ( username ='" . $username . "' OR status='" . $status . "') AND (id='" . $id . "') ) )";
$this->db->where($wherecond);
如果要一次添加AND和OR条件。这会起作用。
答案 7 :(得分:0)
$query = $this->db->select('*')
->where(['email' => $email, 'status' => $status])
->get('mp_user');
$result = $query->row_array();
return $result;