Variable PHP Array dans un WHERE NOT IN SQL?

Raph5959
Invité n'ayant pas de compte PHPfrance

16 oct. 2009, 20:41

Bonjour à tous :)


Voilà j'ai un problème qui est peut être extrêmement simple mais je n'ai pas trouvé de solution...

En fait j'ai une variable Array avec des chiffres.

J'ai une requête SQL à exécuter avec un WHERE qui exclus les chiffres de ma variable Array ci-dessus.

En gros j'aimerai faire une requête du genre
$variable_array = ( 1 => 5614 , 2 => 6985 );

$sql = ('SELECT * FROM table WHERE id NOT IN ' . $variable_array . '');
le résultat voulu serai en réalité au final dans SQL
SELECT * FROM table WHERE id NOT IN ( 5614, 6985 )


J'indique NOT IN juste car il me semblais que c'était cela qu'il faillais utiliser, mais je prend n'importe quelle autre méthode lol.

Si quelqu'un pouvais m'aider je lui en serai reconnaissant!

Merci :)

ViPHP
fab
ViPHP | 2657 Messages

16 oct. 2009, 20:45

Oui mais PHP fait pas la conversion tout seul en chaine de caractère formaté comme MySQL le veut donc tu dois faire une boucle sur ton array et le mettre en forme :p
Seul l'intelligent a le pouvoir de se trouver con
try { work(); } catch(FlemmeExeption $e) { sleep(84600); }

ViPHP
ViPHP | 1136 Messages

16 oct. 2009, 20:47

Ou simplement , sans boucle :
$sql = ('SELECT * FROM table WHERE id NOT IN  (' . implode(',',$variable_array) . ' )');
Edit , il faut retirer les clef avant ... avec array_values()

ce qui donnerai :
$sql = ('SELECT * FROM table WHERE id NOT IN  (' . implode(',',array_values($variable_array)) . ' )');
Ou tu ne met simplement pas de clef au départ ...

ViPHP
fab
ViPHP | 2657 Messages

16 oct. 2009, 20:54

Pas bête :)
Seul l'intelligent a le pouvoir de se trouver con
try { work(); } catch(FlemmeExeption $e) { sleep(84600); }

ViPHP
ViPHP | 1136 Messages

16 oct. 2009, 21:07

... mais là pour le faire deviner .. j'ai pas trouvé comment :-k

:D

Raph5959
Invité n'ayant pas de compte PHPfrance

16 oct. 2009, 22:16

Je vous remercie énormément pour vos réponses!! Et je remercie en particulier stopher qui m'as apporté la solution qui m'était le plus approprié :)

Tout fonctionne parfaitement avec la solution de stopher, donc merci :)