Подтвердить что ты не робот

MySQL PHP - SELECT WHERE id = array()?

Возможный дубликат:
Запрос MySQL с использованием массива
Передача массива в mysql

У меня есть массив в PHP:

$array = array(1, 4, 5, 7);

Как вы можете видеть, у меня есть массив разных значений, но я хочу написать инструкцию MYSQL, которая будет проверять, соответствует ли id равно любому из значений в массиве. Например, если строка имеет id из 1, она вернет эту строку, то же самое для 4, 5 и 7. Длина массива может варьироваться в зависимости от характера программы, так что если проблема является. Могу я просто сделать:

SELECT ...
  FROM ...
 WHERE id = '$array'

Или есть лучший способ?
Если бы я был неясен, пожалуйста, задайте мне дополнительную информацию.

4b9b3361

Ответ 1

Используйте IN.

$sql = 'SELECT * 
          FROM `table` 
         WHERE `id` IN (' . implode(',', array_map('intval', $array)) . ')';

Ответ 2

Что вы ищете, это оператор IN(). Это проверит, будет ли данное поле содержать одно или несколько значений.

SELECT * FROM `Table` WHERE `id` IN (1, 2, 3)

Вы можете использовать простой цикл, чтобы преобразовать переменную $array в правильный формат. Не забудьте вспомнить SQL-инъекцию, если ваши значения массива поступают с передней стороны.

Ответ 3

Просто используйте синтаксис ID IN ():

$sql = "SELECT FROM `table` WHERE `ID` IN (".implode(',',$array).")";

Ответ 4

Вы можете написать свой запрос следующим образом:

select * from table where id in (1, 4, 6, 7)

Вы можете добавить столько значений, сколько вам нужно.

Ответ 5

Вы можете SELECT WHERE id IN (item1, item2...). Просто запустите свой PHP-массив, чтобы построить массив для запроса.

Ответ 6

Вы хотите использовать оператор IN:

$sql = 'SELECT FROM WHERE id IN (' . implode(",", $array) . ')';

В MySQL может быть предел, сколько значений вы можете использовать в списке с оператором IN.