6

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

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

这里user_name是唯一的

如果 user_name=john和user_id=1则以下查询应返回false,如果user_name=johnuser_id =2返回true

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

但它在user_name=johnuser_id=1的情况下返回true

谁能建议我另一种查询不等于的方法。

print($this->db->last_query()) 给出:

SELECT * FROM (user) WHERE user_name = 'john' AND user_id != '1'

4

6 回答 6

4

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

于 2013-02-01T05:25:09.570 回答
3

只需尝试一下,在 where 函数中添加所需的条件。

$this -> db -> where('invitee_phone !=', $user_phone);
于 2015-11-04T04:40:28.383 回答
1

您也可以按照以下方式进行。它对我有用

$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->query('your query');

于 2015-02-05T09:36:13.160 回答
1

类型 1:

使用->where("column_name !=",$columnname) 一列就可以了。

但是如果要检查多列,则必须在where子句中形成一个数组。

像这样

$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='leader@gopis clan'");

类型 2适用于组合查询,我的意思是括号“()”

于 2017-02-21T06:54:12.443 回答
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' 然后它返回空数组。

于 2017-03-23T04:09:48.367 回答
0

使用的问题$this->db->query('your query');是它不便携。采用查询构建器方法的最重要原因之一是,无论您使用什么数据库驱动程序,CodeIgniter 都能确保语法正确。

如果可以进行一些讨论,我可能想听听为什么你的表中需要复合主标识符,我想看看你的表模式是什么样的。但是,我认为讨论的时间已经过去了。

实际上,您希望返回一个布尔结果,说明用户名和 id 组合的可用性——如果一个匹配,但不是两者都匹配,那么true(可用)。

为此,您需要在表中搜索具有两个限定条件的完全匹配的行,计算行数,将该整数转换为布尔值,然后返回相反的值(语法比解释简单)。

考虑一下这种干净、直接、便携的单线。

return !$this->db->where(['user_name' => $name,'user_id' => $userid])->count_all_results('user');

如果false计数是> 0并且计数是,这将返回。true0

于 2020-08-24T13:03:50.243 回答