Как сделать поиск значения по ID

Пример:

Есть таблица posts, в нем поле categories, где значения через запятую 1,2,5,15,16,22,32

$search = 5;
// или $search = "1,15";

Как составить SQL запрос на PHP где поле categories соответствует переменной $search ?


Ответы (1 шт):

Автор решения: Ivan Dudarev

Если не менять структуру БД, можно сделать примерно так:

<?php

$search = "1,15";
$ids = explode(",", $search);
$where = [];
foreach($ids as $id) {
    $where[] = "CONCAT(',', categories, ',') LIKE '%,$id,%'";
}
$sql = "SELECT * FROM posts WHERE " . implode(" AND ", $where);

Но этот вариант будет очень тяжелым для выполнения. Лучше нормализовать базу данных, добавить внешние ключи, индексы и использовать JOIN

→ Ссылка