where_in 只返回 1 行
Posted
技术标签:
【中文标题】where_in 只返回 1 行【英文标题】:where_in just return 1 row 【发布时间】:2017-11-26 02:03:25 【问题描述】:我有这个代码:
模型(Mproses.php):
function cari($d,$p)
$this->db->select('cf_pakar,gejala');
$this->db->from('gejalapenyakit');
$this->db->where_in('id_gejala',$d);
$this->db->where('id_penyakit',$p);
return $this->db->get()->result();
$d = ('1','2','3','4','5')
$p = 1
我有 30 行的数据库, 当我运行这段代码时,我只得到 1 行而不是 5 行,我尝试从 mysql 查询,它返回 5 行而不仅仅是 1 行。
【问题讨论】:
当我使用 echo $this->db-last_query() 时。结果:SELECT * FROMgejalapenyakit
WHERE id_gejala
IN('1','2','3','4','5') AND id_penyakit
= 1
【参考方案1】:
回答:
最初我使用 foreach 来制作我的:
$input = $this->input->post('input');
$i = 0;
foreach($input as $i)
$i++;
$d = $d.$i.',';
$d = ('1','2','3','4','5');
当我使用 $input 作为参数时,它可以完美地工作
【讨论】:
【参考方案2】:试试看:
function cari($d,$p)
$this->db->select('cf_pakar,gejala');
$this->db->from('gejalapenyakit');
$this->db->where('id_penyakit',$p);
$this->db->where_in('id_gejala',$d);
return $this->db->get()->result();
你的$d = ('1','2','3','4','5')
应该是$d = ['1','2','3','4','5']
尝试这样做:
function cari($d,$p)
//load $d here with that :
$d = ['1','2','3','4','5'];
//or that :
$d = [1,2,3,4,5]
$this->db->select('cf_pakar,gejala');
$this->db->from('gejalapenyakit');
$this->db->where('id_penyakit',$p);
$this->db->where_in('id_gejala',$d);
return $this->db->get()->result();
如果它有效,那么您的问题来自您的 $d。如果不是,你的问题一定来自你的数据库
【讨论】:
如果我使用你的代码,那么我的第一个数组将在 [0] 上,对吗?我认为我的 $cf 不需要数组,因为它只是为了在视图中显示最终结果。 即使您的函数在每个循环中返回 4 个结果,$cf 也会采用新值,因此在最终 $cf 中会给您一个值。您需要将 4 值存储在某处以发送它 我要问的是,为什么我的查询只从数据库返回 1 行,而不是 5 @alandsamuel 尝试一下【参考方案3】:您需要在查询中发送“,”分隔值。
$d = 内爆(",",$d);
这会起作用。
【讨论】:
以上是关于where_in 只返回 1 行的主要内容,如果未能解决你的问题,请参考以下文章
带有模板的 Twitter Typeahead 始终只返回 1 行数据