mysql — сравнение с массивом (IN, NOT IN)

При запросе к базе mysql иногда возникает необходимость сравнения со списком:

$query = "SELECT * FROM table WHERE name IN ('book', 'painting, 'drawing')";
$result = mysqli_query($connect,$query);
while($r = mysqli_fetch_array($result)){...}

В условии указывается, что необходимо выбрать все элементы таблицы table, в столбце name содержащие значение списка ‘book’, ‘painting, ‘drawing’.

Если у Вас вместо списка имеется массив который может содержать большое кол-во элементов, то запрос mysql можно изменить на следующий:

$query = "SELECT * FROM table WHERE name IN (".implode(',', $arr).")";
$result = mysqli_query($connect,$query);
while($r = mysqli_fetch_array($result)){...}

В условии указывается, что необходимо выбрать все элементы таблицы table, в столбце name содержащие значение массива $arr.

В случае если Вам наоборот выбрать все элементы кроме указанных в массиве, то используйте следующий пример:

$query = "SELECT * FROM table WHERE name NOT IN (".implode(',', $arr).")";
$result = mysqli_query($connect,$query);
while($r = mysqli_fetch_array($result)){...}

В условии указывается, что необходимо выбрать все элементы таблицы table в столбце name, кроме элементов указанных в массиве $arr.


implode — Объединяет элементы массива в строку

Добавить комментарий

Войти с помощью: