Инструкция Where_in в запросе, построенном с codeigniter со строкой, которая должна быть массивом - PullRequest
0 голосов
/ 11 июня 2018

Проблема с CodeIgniter в предложении where_in для запроса.

Давайте посмотрим на запрос, чтобы описать проблему:

WHERE `table`.`table_row` IN ('7296 ,7314 {and so on});

Это результат моего запросав CodeIgniter (механизм выражения) равен

$sql = ee()->db->where_in('table.table_row', $entry_ids);

Мой массив $entry_ids - это строка, которую я получил ранее в своем коде:

$entry_ids = $ee->TMPL->fetch_param('e_id');

Для работы мой запрос должен быть:

WHERE `table`.`table_row` IN ('7296' ,'7314' {and so on});

Я уже пытался указать, что мой массив на самом деле является массивом, а не строкой:

$entry_ids[] = $ee->TMPL->fetch_param('e_id');

Но на самом деле ничего не изменилось.

Ответы [ 2 ]

0 голосов
/ 12 июня 2018

Надеюсь, это поможет вам:

Используйте explode, чтобы получить строку в массив

  $string = '7296 ,7314'; // string of ids
  $entry_ids = explode(',', $string);
  //print_r($entry_ids);

  $this->db->where_in('table.table_row',$entry_ids); //use in where clause

Рабочая демонстрация: https://eval.in/1019052

Для более http://php.net/manual/en/function.explode.php

0 голосов
/ 11 июня 2018

Итак, у вас есть список идентификаторов, хранящихся в виде строки, из которой вы хотите запросить как оператор IN.

Сначала разбейте вашу строку на массив:
Если ваши идентификаторы разделеныстрока:

$id_array = explode(" ", $string_of_ids);

Если ваши идентификаторы разделены запятыми:

$id_array = explode(",", $string_of_ids);

Если ваши идентификаторы разделены запятыми и одинарными кавычками:

$id_array = explode("','", $string_of_ids);

Тогда выможет передать $ id_array в ваш запрос:
Если ваш столбец id имеет тип int:

$this->db->where_in('table.table_row', $id_array);

Если ваш столбец id имеет тип string: просто добавьте одинарные кавычки к своим идентификаторам:

$id_array = "'" . join("','", $id_array) . "'";
$this->db->where_in('table.table_row', $id_array);

Опять же, если ваши $ string_of_ids содержат кавычки вокруг ваших идентификаторов, вы, вероятно, можете пропустить шаг, просто выполнив:

$id_array = explode(",", $string_of_ids);

Это должно оставить ваши кавычки на месте, поэтому вы не сможетедолжны присоединиться снова.

...