代码点火器where_in JSON 列



我需要一个Codeigniter查询来从JSON列MYSQL表中获取结果。

样品柱数据见下文。

["1","2","6","4","3","5","7","9","8"]

目前我为此使用下面的代码,但它不起作用。

$DOCUMENTS = $this->db->select('*')->where('JSON_CONTAINS(BELONG) = '.$_POST['ID'].'')->get('SOLIDARITY_REQUESTED_FILES')->result_array();

JSON_CONTAINS函数需要两个最少的参数。 查看更多详细信息 这里

$_POST数据添加到查询中是危险的。代码点火器具有input类来从POST请求中获取数据。

$id = $this->input->post('ID');
$DOCUMENTS = $this->db->select('*')->where("JSON_CONTAINS(BELONG, $id)>0")->get('SOLIDARITY_REQUESTED_FILES')->result_array();

如果您需要进一步的指导,请随时使用。

如果 JSON 格式为数组,就像您的数据一样,您可以将 ID 连接到逗号和引号。 然后修剪方括号并通过 LIKE 语句查找。

$concat = "CONCAT(',"',TRIM(LEADING '[' FROM TRIM(TRAILING ']' FROM BELONG)),'",')";
$theId = ',"'.$_POST['ID'].'",';
$DOCUMENTS = $this->db->select('*')->like($concat, $theId)->get('SOLIDARITY_REQUESTED_FILES')->result_array();

希望这有帮助。

假设我正在获取记录city_id应该在以下列表中的位置。 1,2,3,4,5,6,7,8 然后您可以按照以下行添加到代码中

$city_id_list = "1,2,6,4,3,5,7,9,8";
$this->db->where_in('city_id', $city_id_list);

相关内容

  • 没有找到相关文章

最新更新