2012-02-02 2 views
0

Это странная проблема, с которой я столкнулся, у меня есть таблица и вы пытаетесь выполнить запрос MySQL-Update, однако 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

+1

Дело в том, что 'password = 'encryptedthingy' и name = 'xorinzor' и last_login = NOW()' является допустимым булевым выражением в MySQL. Вероятно, это значение присвоено первому столбцу вашей таблицы. Проверьте фактическое значение после этого предложения с помощью 'select * from users'. –

Смежные вопросы