scc*_*cco 1 php mysql arrays codeigniter
我有一个带有图像 ID 的字符串(从另一个 mysql 表中获取)并转换为数组:
$idstring = "12, 18, 3, 392, 0, 9, 44";
$idarray = explode(',', $idstring);
Run Code Online (Sandbox Code Playgroud)
基于这个 id 数组,我想从我的“媒体”mysql 表中获取所有行。
$result = $this->db->select('*')
->from('media')
->where_in('id', $ids)
->get()->result_array();
Run Code Online (Sandbox Code Playgroud)
问题是$result数组的值的顺序很奇怪,如下所示:
$result's order : 44, 9 ,0 ,18 ,3 ,392 ,12 ...
Run Code Online (Sandbox Code Playgroud)
但我需要它们保持在我的 $id 字符串/数组顺序中......
到目前为止,我已经尝试了 4 种方法来解决这个问题:
在没有循环的情况下获取行where_in()- 这会产生大量查询 - 但现在有效......
$result根据 the$idstring或 the的顺序对数组重新排序$idarray,尽管我无法找到工作结果,而且我根本不明白为什么需要执行此步骤
尝试修复查询本身。我听说过ORDER_BYand FIND_IN_SET,$ids但我无法将它放入我的工作 codeigniter 查询中,并且不知道性能是否真的有帮助
所以总而言之,我认为这应该是一项简单的日常任务,我只想使用 codeigniter 按给定顺序获取一堆图片。
我在这里错过了一个简单的解决方案吗?
Field()mysql的使用功能
$result = $this->db->select('*')
->from('media')
->where_in('id', $ids)
->order_by("FIELD(id,".join(',',$ids).")")
->get()
->result_array()
Run Code Online (Sandbox Code Playgroud)
它应该是这样的
FIELD(id,12, 18, 3, 392, 0, 9, 44)
Run Code Online (Sandbox Code Playgroud)
Field()返回逗号分隔列表的索引位置
| 归档时间: |
|
| 查看次数: |
581 次 |
| 最近记录: |