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 * FROM gejalapenyakit 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 行的主要内容,如果未能解决你的问题,请参考以下文章

5.where_in_在指定的字段里面

带有模板的 Twitter Typeahead 始终只返回 1 行数据

sqlite3_step 只返回 1 行

Scenekit hitTestWithSegment 只返回第一个命中(突然)

pyodbc rowcount 只返回 -1

MySQLi 查询只返回一行