2012-02-02 156 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