Получение результата для значения через запятую с условием where

У меня есть 2 столбца, оба имеют значения с запятыми keyword_whomtoteach и area_tutor, когда я передаю несколько значений в $ area и $ keyword_whomtoteach Я не получаю правильный вывод Я использую этот запрос

     $toteach=1,5      $area=1,5
$search  = "keyword_whomtoteach IN (".$toteach.")";
$where = "area_tutor IN (".$area.")";

$this->db->where($search);
$this->db->or_where($where);
$query=$this->db->get();
return $result = $query->result_array();

здесь я получаю правильный результат, но проблема в том, что мне нужно что-то вроде этого
если

id   keyword_whomtoteach             area_tutor
1  1,2,3,4,5                         1,2
2  2,3,5                             2,3
3  5,6,7                             1,4
4  1,5,6                             5,6

Я хочу что-то вроде, когда я передаю $ toteach = 1 и $ area = 1,5 в этот момент времени, я должен получить оба идентификатора 1 и 4, так как оба имеют ключевое слово keyword_whometoteach = 1,5

-3

Решение

Вы должны заменить column_name IN('1,5') синтаксис с FIND_IN_SET(1, column_name) AND FIND_IN_SET(5, column_name) или же FIND_IN_SET(1, column_name) OR FIND_IN_SET(5, column_name) (в зависимости от желаемого результата).

Тем не менее, ваша схема не является хорошим способом для хранения этих данных. Обычной практикой было бы создание второй таблицы и сохранение списка с разделителями-запятыми в этой таблице. Читать Действительно ли плохо хранить список с разделителями в столбце базы данных? для получения дополнительной информации о том, как и почему.

У вас также есть ошибки синтаксиса PHP ($toteach=1,5 $area=1,5 должно быть $toteach='1,5'; $area='1,5';) и ваш запрос MySQL требует кавычек $toteach а также $area,

0

Другие решения

Других решений пока нет …