Массив Php к структуре условия запроса MySQL

У меня есть следующий массив в PHP:

$arr = [1, 3, '4A', '5A', '5C', '2B', '2C', '2E'];

Каким-то образом мне нужно преобразовать этот массив в строку, которая выглядит следующим образом:

 $filter =     "(id like '1%') OR
(id like '3%') OR
(id like '4A%') OR
(id like '5A%' OR id like '5C%') OR
(id like '2B%' OR id like '2C%' OR id like '2E%')";

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

$sql = "SELECT * FROM list WHERE {$filter}";

Может кто-нибудь помочь мне преобразовать этот массив в правильную строку? Каков наилучший метод для достижения этой цели?

Чтобы дать вам представление о том, что я пытаюсь:
Столбец ‘id’ в моей строке базы данных выглядит так: 1B2875. Где первый символ (1) обозначает категорию, а второй символ (B) — подкатегорию. Данный массив является результатом запроса фильтра на стороне клиента.

0

Решение

Вы можете использовать регулярные выражения в SQL:

SELECT * FROM list WHERE id REGEXP '^(1|3|4A|…)[0-9]+$'

Значение в скобках можно сгенерировать с помощью функции PHP implode('|', $filter_strings)

Обратите внимание, что сначала вы должны проверить и удалить строки фильтра, чтобы пользовательский ввод не мог манипулировать запросом. Функция preg_quote здесь полезно

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]