$strFindInSet = 'FIND_IN_SET';
$iteration = 0;
foreach ($userRow["cur_hars"] as $key => $curHar) {
if ($iteration == 0) {
$strFindInSet = $strFindInSet . '(' . $curHar["value"] . ',`' . $curHar["id"] . '`' . ')';
} else {
$strFindInSet = $strFindInSet . ' AND FIND_IN_SET(' . $curHar["value"] . ',`' . $curHar["id"] . '`' . ')';
}
$iteration++;
}
$ifress = $db->rawQuery('SELECT * from alice5_ifress where ' . $strFindInSet . '');
Формирую запрос в цикле с FIND_IN_SET в котором устанавливаю необходимые характеристики для поиска, проблема в том что мне нужно проверять значение $curHar["id"]
текущей итерации со значением $curHar["id"]
предыдущей итерации и если условие выполняется, то я пишу не AND, а OR и оборачиваю в скобки FIND_IN_SET предыдущей итерации и FIND_IN_SET текущей итерации, как такое вообще выполнить???
Т.е. получается что-то вроде:
SELECT * from alice5_ifress where FIND_IN_SET (55,`10`) AND FIND_IN_SET(76,`42`) AND FIND_IN_SET(80,`59`) AND ( FIND_IN_SET(53,`8`) OR FIND_IN_SET(83,`8`))
Такое решается в 2 прохода. На первом идет группировка по id
, а на втором уже формируем запрос
$clauses = [];
foreach ($array as $current) {
$clauses[$current["id"]][] = 'FIND_IN_SET((' . $curHar["value"] . ',`' . $curHar["id"] . '`' . ')';
}
$where = '';
foreach($clauses as $clause) {
if ($where) {
$where .= " AND ";
}
if (count($clause) > 0) {
$where .= '(' . implode(' OR ', $clause) . ')';
} else {
$where .= $clause[0];
}
}
UPD: исправил ответ после замечания
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Как передать POST параметр через ajax в файл controller модуля OpenCart ?
Я делаю визуализатор сортировки на c++, можно ли используя обычные алгоритмы сортировки пошагово отсортировать массив, те
В первой строчке условие после && полностью игнорируется, в при вынесении ! за скобку, как во второй строчке, оно учитываетсяКто знает,...