2010-05-01 34 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。在不更新工作

这有什么错呢?我想从比赛中检索所有member_ids,并且还包含到member_id $ other_id。没有$ other_id就可以。

顺便说一下,它给了我“子查询返回多于一行”的错误。

回答

7

尝试用:

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 

与建议 - 为int类型的列不使用apostrophs。

+0

棒极了!完美的作品。非常感谢你。 :) – 2010-05-01 17:44:07

+0

“int型列不使用apostrophs。” 我用addslashes()函数保护它,所以我认为它没关系,不是吗? – 2010-05-01 17:45:22

+0

对于字符串 - 好吧,但我preffer'mysql_escape_string()'。 如果你使用int,float等等 - 将它们转换为'$ id =(int)$ _GET ['id'];'(或'(float)'等),这就足够了。 – hsz 2010-05-01 17:48:42

4

子查询返回member_id和$ other_id

+0

我怎样才能使它与只有一个查询工作? – 2010-05-01 17:41:33

+1

hsz已经回答了 – 2010-05-01 17:43:03

4

另一种方式来做到这一点:

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