SQL выбирает все в массиве

У моей домашней работы есть проблема, например, существует массив категорий $cat = array ('1', '4', '5', '7'); теперь мне нужно выбрать продукты из db на основе категории

SELECT * FROM products WHERE catid='1'
SELECT * FROM products WHERE catid='4'
SELECT * FROM products WHERE catid='5'
SELECT * FROM products WHERE catid='7'

Можно ли сделать это в одном запросе? так как окончательные результаты четырех запросов будут объединены.

Ответ 1

SELECT * FROM products WHERE catid IN ('1', '2', '3', '4')

Ответ 2

// array of $ids that you need to select
$ids = array('1', '2', '3', '4', '5', '6', '7', '8');

// create sql part for IN condition by imploding comma after each id
$in = '(' . implode(',', $ids) .')';

// create sql
$sql = 'SELECT * FROM products WHERE catid IN ' . $in;

// see what you get
var_dump($sql);

Обновление: (короткая версия и обновление без запятой)

$ids = array('1','2','3','4');
$sql = 'SELECT * FROM products WHERE catid IN (' . implode(',', $ids) . ')';

Ответ 3

$SQL_Part="("
$i=0;
while ($i<length($cat)-1)
{
   $SQL_Part+=$cat[i]+",";
}
$SQL_Part=$SQL_Part+$cat[$i+1]+")"

$SQL="SELECT * FROM products WHERE catid IN "+$SQL_Part;

Это более общий и будет соответствовать любому массиву!