2012-02-02 155 views
0

這是一個奇怪的問題,我有一個表,並嘗試做一個MySQL更新查詢,但是,PHPMyAdmin一直說0行受到影響。MySQL更新沒有更新任何行

表:

CREATE TABLE IF NOT EXISTS `users` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `userid` int(11) NOT NULL, 
    `name` varchar(255) NOT NULL, 
    `last_login` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 
    PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=55069 ; 

-- 
-- Dumping data for table `users` 
-- 

INSERT INTO `users` (`id`, `userid`, `name`, `last_login`) VALUES 
(1, 55068, 'temp', '2012-02-02 09:04:50'); 

查詢:

UPDATE `users` SET name='xorinzor' AND last_login=NOW() WHERE userid='55068' 

返回任何錯誤,只是什麼也沒發生,有不知道爲什麼,這將是。

問候, Jorin

回答

4

更改更新一句:

UPDATE `users` SET password='encryptedthingy', name='xorinzor', last_login=NOW() 
WHERE userid=55068 

你的SQL語法錯了。如果您想一次更新多個字段,則不應使用and關鍵字將它們與,分開。

此外,使用'55068'的單引號應該有幫助,因爲該列是一個數字。而'55068'是一個字符串文字。

確保這句話返回值:

select * from `users` where userid=55068 
+0

這確實奏效了,但爲什麼那裏沒有錯誤的返回? – xorinzor 2012-02-02 09:13:43

+1

事情是'password ='encryptedthingy'和name ='xorinzor'和last_login = NOW()'是MySQL中一個有效的布爾表達式。它可能會將該值分配給表格的第一列。用'select * from users'檢查該句後的實際值。 – 2012-02-02 09:17:22