Запуск выбора в списке значений, разделенных запятыми, в PHP

У меня проблема с выбором запроса в базе данных. Некоторые данные хранятся в виде списка значений, разделенных запятыми, например:

Table: example_tbl | Id | People | Children | | 1 | 1,2,3 | 8,10,3 | | 2 | 7,6,12 | 18,19,2 | 

И пример того, что я пытаюсь запустить:

 <?php include 'class.php'; $selection = 1; $db = new DbClass; $tbl_name = 'example_tbl'; $sql = "SELECT * FROM $tbl_name WHERE ".$selection." IN People"; $result = $db->query($sql); $print_r($result); ?> 

Сценарий выше должен возвращать строку 1 после нахождения «1» в столбце «Люди», но, я уверен, я его сбросил.

Проблема, с которой я сталкиваюсь, заключается в том, что я думаю, что у меня есть оператор IN назад, т.е. я ДУМАЮ, что этот метод будет выбирать значения, если $ selection был разделенным запятыми (взорванным) списком, а не тем способом, который я пытаюсь использовать.

Я не знаю, слишком ли важно, что я отправляю и получаю из класса db выше, но если вы хотите знать, это просто простой скрипт, который запускает все соответствующие биты и возвращает массив результата. на данный момент он ничего не возвращает, потому что не находит соответствия

Заранее спасибо за все, что вы можете мне сказать.

Cheers -Dave

Related of "Запуск выбора в списке значений, разделенных запятыми, в PHP"

Почему люди настаивают на этой безумной привычке к значениям данных, разделенных запятыми, в столбце, а не правильно нормализуют их структуру базы данных. Это всегда приводит к проблемам.

 SELECT * FROM $tbl_name WHERE CONCAT(',',People,',') LIKE '%,".$selection.",%'"; 

или

 SELECT * FROM $tbl_name WHERE FIND_IN_SET(".$selection.",People);