2013-02-01 75 views
5

Mysql codeigniter查询无法正常工作。如果MySQL表看起来像这样 假设:Codeigniter mysql不等于查询

user_id|user_name 
     1|john 
     2|alex 
     3|sam 

这里USER_NAME是唯一

下面的查询将返回如果USER_NAME =约翰USER_ID = 1真正如果说user_name =约翰user_id = 2

$this->db->get_where('user', array('user_name' => $name,'user_id !=' => $userid)); 

但它在壳体USER_NAME =约翰USER_ID = 1返回

任何人都可以建议我一种替代的查询方式不等于。

打印($这个 - > DB-> last_query())给出:

SELECT * FROM(用户)其中user = '约翰' AND user_id说明= '1'

+0

你有任何额外的用户的名字约翰?这也将恢复真实。 – sgeddes

+0

没有用户名是唯一的 – Avinash

+1

试试这个,并检查执行了什么查询 print“SQL Query:”。$ this-> db-> last_query(); –

回答

4

你为什么不使用!简单$this->db->query('your query');

+0

似乎是唯一的办法。 – Avinash

+0

我建议你使用预先解析和编译的过程,并使用$ this-> db-> query('call yourprocedure('your parms')'); – rohitarora

1

你也可以去follwoing的方式。它为我工作

$total = 5; 
$CI = get_instance(); 
$CI->load->database(); 
$CI->db->order_by('id','asc'); 
$topusers = $CI->db->get_where('users',array('user_type != 1 && `status` =' => 1),$total,0); 
echo $CI ->db ->last_query(); 
die; 

,如果仍然不适合你可以@rohit去提示函数:$ this-> DB->查询(“查询”);

1

只要试试这个

$this -> db -> where('invitee_phone !=', $user_phone); 
0

类型1:

使用->where("column_name !=",$columnname)是罚款一列。

但是,如果你想检查多列,你必须形成阵列里面其中条款。

像这样

$whereArray = array(
       "employee_name" => $name, 
       "employee_id !=" => $id, 
     ); 

$this->db->select('*')->from('employee')->where($whereArray); 

类型2:

我们可以只写正是我们想要里面的位置。

$thi->db->where(("employee_id =1 AND employee name != 'Gopi') OR designation_name='[email protected] clan'"); 

2型是很好的相结合的查询工作,我的意思是paranthesis “()”

0

你可以按照下面的代码:

$query = $this->db->select('*')->from('employee')->where('user_name', $name)->where('user_id !=', $userid)->get(); 
$last_query = $this->db->last_query(); 
$result = $query->result_array(); 

如果你传递$ name ='john'和$ userid ='1',那么它返回空数组。