2010-05-01 4 views
1

UPDATE statistics '
SET money = money + '$money'
WHERE member_id IN
((SELECT member_id FROM races WHERE l_id = '$mem_id'), $other_id)WHERE id IN ne fonctionne pas UPDATE

Quel est le problème avec ça? Je veux récupérer tous les member_ids des courses et inclure aussi dans member_id $ other_id. Sans $ other_id cela fonctionne. Par ailleurs, il me donne l'erreur "Sous-requête renvoie plus de 1 rang" erreur.

Répondre

7

$ Essayez avec:

UPDATE statistics 
    SET money = money + $money 
WHERE member_id IN (
     SELECT member_id 
     FROM races 
     WHERE l_id = $mem_id 
     ) 
    OR member_id = $other_id 

Et suggestion - pour int colonnes de type ne pas utiliser apostrophs.

+0

Superbe! Fonctionne parfaitement. Merci beaucoup. :) –

+0

"pour les colonnes de type int n'utilisez pas d'apostrophes." Je l'ai protégé avec la fonction addslashes(), donc je pense que ça va, n'est-ce pas? –

+0

Pour les chaînes - ok, mais je préfffer 'mysql_escape_string()'. Si vous travaillez avec ints, floats, etc - lancez-les '$ id = (int) $ _GET ['id'];' (ou '(float)', etc) et ce sera suffisant. – hsz

4

sous-requête retourne MEMBER_ID et other_id

+0

Et comment puis-je le faire fonctionner avec une seule requête? –

+1

hsz déjà répondu –

4

Une autre façon de le faire:

(SELECT member_id FROM races WHERE l_id = '$mem_id' 
UNION 
SELECT $other_id) 
Questions connexes