Возможный дубликат:
Запрос MySQL с использованием массива
Передача массива в mysql
У меня есть массив в PHP:
$array = array(1, 4, 5, 7);
Как вы можете видеть, у меня есть массив разных значений, но я хочу написать инструкцию MYSQL, которая проверяет, равен ли id
любому из значений в массиве. Например, если строка имеет id
1, она вернет эту строку, то же самое для 4, 5 и 7. Длина массива может варьироваться в зависимости от характера программы, так что это проблема. Могу я просто сделать:
SELECT ... FROM ... WHERE id = '$array'
Или есть лучший способ?
Если бы я был неясен, пожалуйста, обратитесь за дополнительной информацией.
Используйте IN
.
$sql = 'SELECT * FROM `table` WHERE `id` IN (' . implode(',', array_map('intval', $array)) . ')';
Вы ищете инструкцию IN()
. Это будет проверяться, если заданное поле содержит любое из 1 или более значений.
SELECT * FROM `Table` WHERE `id` IN (1, 2, 3)
Вы можете использовать простой цикл для преобразования переменной $array
в правильный формат. Не забудьте вспомнить SQL-инъекцию, если значения вашего массива поступают из передней части.
Просто используйте синтаксис ID IN ()
:
$sql = "SELECT FROM `table` WHERE `ID` IN (".implode(',',$array).")";
Вы можете написать свой запрос следующим образом:
select * from table where id in (1, 4, 6, 7)
Вы можете добавить столько значений, сколько вам нужно.
Вы можете SELECT WHERE id IN (item1, item2...)
. Просто запустите свой PHP-массив, чтобы построить массив для запроса.
Вы хотите использовать оператор IN
:
$sql = 'SELECT FROM WHERE id IN (' . implode(",", $array) . ')';
В MySQL может быть предел, сколько значений вы можете использовать в списке с оператором IN
.