systemiv
@systemiv

Почему поле БД увеличивает только 1 раз?

Вот дамп таблицы:
CREATE TABLE IF NOT EXISTS `keys` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `key` varchar(255) NOT NULL,
  `count` int(11) NOT NULL DEFAULT '1',
  PRIMARY KEY (`id`),
  UNIQUE KEY `key` (`key`)
)


А вот запрос:
INSERT INTO `keys` (`key`) VALUES ('$s') ON DUPLICATE KEY UPDATE count=VALUES(count)+1


Нужно что бы если повторяется ключ, увеличивался count.
Проблема в том, что при первом запросе он пишет туда 1 по дефолту, при втором 2, а при последующих запросах как будато их и не было. 2 остается без измемений.
  • Вопрос задан
  • 2664 просмотра
Решения вопроса 2
FanatPHP
@FanatPHP
Чебуратор тега РНР
Это типичная ошибка похапе программистов, которые пишут код методом копирования, не подключая голову.
values(field) для них - не команда, выполняющая строго определённую функцию, а священный текст, завещанный предками, кототорый надо употреблять только так и никак иначе, потому что он составляет часть Великой Мантры Он Дупликейт.

А если дать себе труд подумать, что делает эта функция, то нужное решение тут же придёт в голову, поскольку является частью Мантры Инкремента Значения Поля.
Ответ написан
Комментировать
dell...

INSERT INTO `keys` (`key`) VALUES ('$s') ON DUPLICATE KEY UPDATE count=count+1

Так работает.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы