46 votes

SQL sélectionne tout dans un tableau

Mes devoirs ont un problème, par exemple il y a un tableau de catégories $cat=array('1','4','5','7'); maintenant je dois sélectionner des produits de db en fonction de la catégorie qui est

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

Est-il possible de le faire en une seule requête ? car les résultats finaux des quatre requêtes seront combinés.

88voto

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

14voto

ustmaestro Points 998
// 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);

Mise à jour : (une version courte et mise à jour manquant la virgule)

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

-3voto

Noor Points 3255
$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;

C'est plus générique et s'adaptera à n'importe quel tableau !!

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X