Php 编码点火器';订单由';添加按';id';自动地
我有这张桌子:Php 编码点火器';订单由';添加按';id';自动地,php,mysql,codeigniter,Php,Mysql,Codeigniter,我有这张桌子: LANGUAGES ID NAME DEFAULT ACTIVE 1 English 0 1 2 Italian 1 1 3 Spanish 0 1 提取顺序是:所有活动的,但首先是默认的,然后是其他的。 我在codeigniter中使用此查询: public function get_languages_list() { $array = array(); $this->db-&
LANGUAGES
ID NAME DEFAULT ACTIVE
1 English 0 1
2 Italian 1 1
3 Spanish 0 1
提取顺序是:所有活动的,但首先是默认的,然后是其他的。
我在codeigniter中使用此查询:
public function get_languages_list() {
$array = array();
$this->db->select('*');
$this->db->from('languages');
$this->db->order_by('default','desc');
$this->db->where("active",1);
$query = $this->db->get();
foreach($query->result() as $row) {
$array[$row->id] = array();
$array[$row->id]["name"] = $row->name;
$array[$row->id]["default"] = $row->default;
$array[$row->id]["active"] = $row->active;
}
return $array;
}
它工作正常,但仅在某些情况下。在其他情况下,排序不正确。
我已打印了两种情况下的查询:
正确的大小写
SELECT * FROM `languages` WHERE `active` = 1 ORDER BY `default` DESC
SELECT * FROM `languages` WHERE `active` = 1 ORDER BY `id`, `default` DESC
奇怪的情况
SELECT * FROM `languages` WHERE `active` = 1 ORDER BY `default` DESC
SELECT * FROM `languages` WHERE `active` = 1 ORDER BY `id`, `default` DESC
Codeigniter通过行为在顺序中添加“id
”。
我调用此查询的方式总是相同的,没有动态参数,两种情况下的db记录都是相同的,无论如何,结果查询是不同的。
我在codeigniter文档中找不到任何与此相关的内容。
这怎么可能?可能是虫子吗
编辑
现在,我插入了checomplete方法,以表明没有参数或特殊条件。
我还按查询元素的顺序尝试了此选项:
$this->db->select('*');
$this->db->from('languages');
$this->db->where("active",1);
$this->db->order_by('default','desc');
$query = $this->db->get();
结果是一样的。
我试着添加一些其他条件,但结果是一样的
编辑2
我的codeigniter版本:
CI-3.1.10
嗯,根据我从你的问题中了解到的情况,这是完全正常的 这只是数据库提供的排序系统的默认行为。在特定情况下,当数据已按定义的属性完成排序时;在您的情况下,它是默认属性;然后,如果它遇到(几乎在所有实际情况下)该属性中具有相同值的条目,它将检查排序的主ID。因此,这就是为什么查询的输出看起来不正确的原因 您可以尝试按如下方式重新排列代码:
$this->db->select('*');
$this->db->from('tbl_languages');
$this->db->where("is_active",1);
$this->db->order_by('is_default','desc');
$query = $this->db->get();
注意,我只改变了WHERE行和ORDER_之间的位置
您还可以为排序添加更具体的属性
然而,这只是我的假设。我认为您应该向我们展示您在实际中遇到的发现“bug”的部分数据和案例,以便我们能够进行更深入的分析
谢谢。您能发布调用模型方法的代码块吗??调用此方法时是否传递任何适用的参数或条件??嗨,没有参数传递给该方法。不管怎样我都会编辑这个问题我至少试了500次。我没有遇到这个案子。我在CI-3.1.9上试过这个。你的是什么?谢谢,我的版本是CI-3.1.10谢谢,我已经编辑了我的问题。无论如何,我试图改变元素的顺序,但结果是same@user31929字体这真是一个有趣的案例,我喜欢它。顺便说一句,我也使用相同的CI版本进行了测试。该表中的数据条目怎么样,都是吗?我的意思是,你能展示你得到的不一致输出的真实情况吗?连同您拥有的语言表中的数据项,这是真实的案例表,仅此而已