Aller au contenu

Comment faire une requête multiple avec un array ?


Sujets conseillés

Posté

Bonjour,

Voici mon problème, j'ai fait une recherche dans une bdd et j'ai tout inséré dans une variable array ($papa=('jean','paul','pierre'); par exemple).

J'aimerais maintenant savoir comment je peux faire une requête à MYSQL en disant je voudrais sélectionner tous les enfants dont le papa s'appelle jean ou bien paul ou bien pierre (donc à savoir la variable array de tout à l'heure $papa).

Est-ce que ceci est correcte ?

$donnees=mysql_query('select * from table where papa=$papa');

Je ne pense pas que ça marchera mais je ne sais pas comment demander ce genre de requête à mysql. Donc demander de rechercher tous les enfants dont papa s'appelle $papa[0] ou bien papa[1] ou bien papa[2] etc... jusqu'à la fin des valeurs contenues dans $papa. Valeurs que je ne connais pas car elle provient d'une base de donnée en perpétuelle mouvement.

Merci beaucoup pour votre aide,

Fred

Posté

Salut,

peux-tu coller la structure exacte de ta/tes tables mysql ?

Car c'est un peu flou là :)

A+

Posté

salut,

Tu peux faire ainsi :

select * from table where papa in ('".$papa[0] ."', '".$papa[1]."', '".$papa[2]."')

Bon courage

Portekoi

Posté

J'imagine que tu ne connais pas forcément la longueur de ton array (Ca serait trop simple).

Je te conseille dont de "transformer" ton array en chaîne de caractères, avec la fonction implode(), puis de passer ces résultats dans la requête SQL.

Ce qui donnerait :

<?php
$liste_papas = implode(',',$papa);
?>

select * from table where papa in ($liste_papas)

Posté

Pour compléter au cas où ce sont des "varchar" :

<?php
$liste_papas = implode(',',$papa);
$liste_papas = str_replace(",","','",$papa);
?>

Peut être ajouter un addslahes au début :) puis :

select * from table where papa in ('".$liste_papas."')

Les deux fonctionneront :)

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...