У меня есть обе стороны, разделенные запятой, такие как
$ing=1,2,3,4,5,6
, а в базе данных есть таблица со значениями
IDS 5,2,1,6,2,3,45 // in database
Я знаю, что это не очень хорошая практика, но мне пришлось сделатьэто, чтобы получить значения в одном запросе.У меня также есть отдельная таблица, в которой IDS являются отдельными и соответствуют отдельным пользователям, таким как
user 1 IDS 2
user 3 IDS 65 etc
. На данный момент я использую
$conditions[] = "CONCAT(',', `rcring`, ',') REGEXP ',($ing),'";
. Это дает мне хорошие результаты, но дает мнезначения, в которых существует любой из $ ing, мне нужны только таблицы, в которых есть как минимум все $ ing
Можете ли вы помочь мне, пожалуйста, я попробовал свою работу и не могу найти правильное решение где-либо.Thankx.
//EDIT
у меня уже есть условие в виде массива
if($ser !=''){
$conditions[] = "rc_ser='$ser'";
}if($fridge == 1){
$ing="0|";
$ctch2fr='checked';
foreach($_SESSION['fridge'] as $item){
$ing=$ing.$item."|";}
$conditions[] = "CONCAT(',', `rcring`, ',') REGEXP ',($ing),'";
}
if (count($conditions) > 0) {
$sql= implode(' AND ', $conditions);
}
Как это условие в массиве, и я вызываю его так в запросе
select * ,(select count(rcid) from recipe where ($sql)) as total from recipe where ($sql)
я попробовал ответы ниже, но это дает мне 0 результат всегда, когда я печатаю запрос, он показывает мне вот так
select *,(select count(rcid) from recipe where (CONCAT(',', `rcring`, ',') REGEXP ',(0),') ) as total from recipe where (CONCAT(',', `rcring`, ',') REGEXP ',(0),')