2010-05-01 33 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)