2013-03-21 4 views
1

Вместо того чтобы найти, что существует строка, где «bookName» равно «bookName» и просто обновляется, она создает новую строку. Что не так с моей командой? благодаря!Таблица mysql, создающая новую строку вместо обновления

$query = mysql_query(
"INSERT INTO custombookinfo (userId, sendToAddress, work, caseStudies, url, entryPoint, date, bookName) 
VALUES ('$userId', '$emailAddress', '$work', '$caseStudies', '$url', '$entryPoint', '$date', '$bookName') 
ON DUPLICATE KEY UPDATE bookName = 'bookName'" 
); 
+0

DoES 'bookName' есть ключ UNIQUE (или PRIMARY)? Правильно ли он сопоставлен (язык, чувствительность к регистру)? –

+0

bookName должен быть первичным ключом или уникальным ключом eithor, «ON DUPLICATE KEY» может вступить в силу! – babaoqi

+0

Я буду этим парнем сегодня и скажу, пожалуйста, не используйте функции mysql_ * для нового кода. Они [устарели] (http://php.net/manual/en/intro.mysql.php). Используйте [подготовленные утверждения] (http://goo.gl/vn8zQ) с помощью [PDO] (http://php.net/pdo) или [MySQLi] (http://php.net/mysqli). – peterm

ответ

0

INSERT запрос является правильным, но я думаю, что вы не смогли определить UNIQUE ограничение на колонке bookName. Выполнить следующее заявление:

ALTER TABLE custombookinfo ADD CONSTRAINT tb_uq UNIQUE (bookName); 
Смежные вопросы