Codeigniter-由Implode生成的查询返回“未知列”

时间:2019-10-09 22:32:57

标签: php codeigniter

我目前正在尝试在codeigniter中编写查询,但遇到了问题,包括并在查询内部爆裂。这是我的代码。

$permitedCodeList = ["ELEC-22", "ELEC-100", "ELEC-200", "999873"];

$query = $this->inventario_db->query("
    SELECT *
    FROM pt_inv_num_id_equipo
    WHERE numID = '123456789' AND codigo IN ('" . implode("','", $permitedCodeList). "')
    LIMIT 1
");
$result = $query->row();

我收到以下错误消息:Unknown column 'ELEC' in 'where clause'。我知道它必须与将数据返回为ELEC-22,ELEC-100,ELEC-200,999873的内爆性联系在一起,但是它似乎并没有为每个值添加单引号并将其包含在查询中。

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

最好使用CI Query Builder 它专门具有where_in方法来处理这种情况。

您的查询可以按以下方式构造:

        $permitedCodeList = ["ELEC-22", "ELEC-100", "ELEC-200", "999873"];

        $this->db->from('pt_inv_num_id_equipo');
        $this->db->where('numID ', 1234 );
        $this->db->where_in('codigo', $permitedCodeList );
        $result = $this->db->get()->row_array();

您还可以使用以下代码调试最后一个查询

echo $this->db->last_query(); die();