2013-01-02 162 views
2

我嘗試使用下面的查詢在這裏http://i.imgur.com/XTlAv.pngMySQL的語法WHERE子句

我的表更新row 3(id=8)

UPDATE player_ban 
    SET until = Now(), 
     unbanned_by = "MrSnare", 
     unbanned_reason = "test", 
     unbanned_date = Now() 
WHERE name = "MCYasman" 
    & unbanned_by = NULL 
    & until > NOW(); 

查詢正在運行,但沒有行被更新。

什麼問題?

我正在使用phpMyAdmin。

+3

將您的&更改爲AND。 – SenorAmor

回答

8

我會改變您的查詢使用AND而不是&unbanned_by IS NULL。所以查詢將是:

UPDATE player_ban 
SET until = Now(), 
    unbanned_by = "MrSnare", 
    unbanned_reason = "test", 
    unbanned_date = Now() 
WHERE name = "MCYasman" 
    AND unbanned_by IS NULL 
    AND until > now(); 

的值永遠不會= null,你必須使用IS NULL

3

不使用&,使用AND代替

WHERE name = "MCYasman" AND unbanned_by IS NULL AND until > now(); 
+0

非常感謝。它工作完美 – MrSnare

+0

很好:),祝你好運與其餘 –

0

你需要改變你的unbanned_by支票使用 「爲空」,而不是 「= NULL」。像這樣。

UPDATE player_ban SET until = Now(), unbanned_by = "MrSnare", unbanned_reason = "test", unbanned_date = Now() WHERE name = "MCYasman" & unbanned_by is NULL & until > now(); 

NULL在SQL中不等於自己。

> select null = null, null is null, null is not null; 
+-------------+--------------+------------------+ 
| null = null | null is null | null is not null | 
+-------------+--------------+------------------+ 
|  NULL |   1 |    0 | 
+-------------+--------------+------------------+ 
1 row in set (0.00 sec) 
+0

你是對的,但這不是他的要求中唯一的錯誤 –