Как извлечь данные из таблицы, разделенной запятой в sql?

0

У меня есть ученики таблиц, содержащие данные, подобные приведенным ниже:

id       name       activity
1        susan      1,2
2        denny      1,2,3
3        ken        3

Я хочу выбрать все данные, такие как имя и идентификатор из этой таблицы, имеющие активность, равную 2. Я выполнил sql-запрос, используя, но это не сработает.

$sqll = mysqli_query($con,"SELECT id,studentname FROM students WHERE activity LIKE '%$activity'");

Если в другой строке содержатся такие данные, как id: 4 name:ben activity: 22 она также покажет эту строку. Мне нужны строки, содержащие только активность 2.

Может ли кто-нибудь предложить решение для этого?

  • 0
    $ sqll = mysqli_query ($ con, "SELECT id, имя студента ОТ студентов, ГДЕ активность нравится"% $ activity "");
  • 0
    Есть ли другой способ без использования LIKE
Показать ещё 9 комментариев
Теги:
database-design

2 ответа

0
Лучший ответ

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

$sqll = mysqli_query($con,"SELECT id,studentname FROM students WHERE CONCAT(',',activity,',') LIKE '%,$activity,%'");

Обратите внимание, что вы объединяете запятую с каждой стороны полевых данных и конкретную деятельность, которую вы ищете. Также обратите внимание: я добавил% от права на подобное, чтобы так, чтобы "denny" был пойман

  • 0
    Спасибо !! работает
  • 0
    Если я дам $ активность, это вызовет инъекцию sql. Как это предотвратить?
Показать ещё 1 комментарий
0
SELECT  id, studentname
    FROM  students
    WHERE  FIND_IN_SET("$activity", activity);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню