如何在CodeIgniter中从数据库表中获取偶数/奇数id号码

3

我是Codeigniter的新手,正在处理一个紧急项目的报告查询,但卡在了其中。请Codeigniter专家帮帮我。

  • 我有一个大型数据库表,只想显示表字段名为“sale_id”的奇数/偶数数据行。我曾试过在PHPMyadmin中使用原始代码进行过滤,它对我有效。但是在Codeigniter中无法应用。

SELECT * FROM ospos_pak_sub_cat WHERE id %2 =0;

这段代码在原始PHP编码中对我有效。如何在Codeigniter中使用它?我已经在该查询上使用了Where条件,并想添加新查询。以下是现有的Where条件,它运行良好。

$this->db->where('sale_date BETWEEN "'. $inputs['start_date']. '" and "'. $inputs['end_date'].'"');

它可行,但我尝试了下面的代码来解决问题,但不起作用并出现错误。

$this->db->where('sale_id %2'=> 0);

使用此行时出现错误。说 -

Parse error: syntax error, unexpected '=>' (T_DOUBLE_ARROW)

请帮助我找到解决方案。谢谢。

4个回答

9
在您的模型中,只需像这样编写查询:
$this->db->select('*');
$this->db->from('ospos_pak_sub_cat');
$this->db->where('sale_id %2=', 0);
$query_result = $this->db->get();
$result = $query_result->result();

您的代码中缺少 '='。希望这样可以解决问题。

非常感谢Tahsin Abrar兄弟。几天前我尝试了你的解决方案,并得到了答案。 - Raihan Sabuj

1

这给了我一个错误。使用这个查询 $this->db->where('MOD(sale_id ,2)', 0); 将会起作用。 - hamdanjz4

0

正如您所提到的,您可以将新条件添加到现有的where条件中,如下所示

$this->db->where('(sale_date BETWEEN "'. $inputs['start_date']. '" and "'. $inputs['end_date'].')" and ((sale_id % 2) = 0)');

0

我不确定,但我认为它会起作用,请尝试这行代码

$this->db->where('sale_id %2',0);

感谢您的建议,但是没有起作用。出现了以下错误。发生数据库错误错误编号:1064您的SQL语法有误,请检查与您的MySQL服务器版本相对应的手册,以获取正确的语法使用方式,在第6行附近出现问题:'0 GROUP BY sale_id ORDER BY sale_date' - Raihan Sabuj
这段代码似乎有一些错误,请尝试使用以下代码行。我已经运行了这段代码并得到了您想要的结果:$this->db->where('sale_id % 2 = ',0); - Priyank
嗨,在SQL中,%字符是通配符而不是模数,这可能解释了你的错误。你可以使用MOD函数代替。http://dev.mysql.com/doc/refman/5.0/en/mathematical-functions.html#function_mod - Oliverb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接