Вопрос по mysql

Программирование, которое не связано с API.
Ответить
Аватара пользователя
Богдан
Сообщения: 21
Зарегистрирован: 26 дек 2010, 05:22

Вопрос по mysql

Сообщение Богдан »

Есть поле рейтинга в таблице. Я пытаюсь обновить это поле, добавив к значению 100 пунктов при совершении определенного действия.

Получилось добавить к неопределенному юзверю, примерное так:

Код: Выделить всё

$query = "INSERT INTO users  (rate) VALUES ('100') ON DUPLICATE KEY UPDATE  `rate` = (`rate`+100)";
Когда пытаюсь присвоить значение определенному юзверю - ничего не происходит. Делаю так:

Код: Выделить всё

$query = "INSERT INTO users WHERE uid=$viewer_id (rate) VALUES ('100') ON DUPLICATE KEY UPDATE `rate` = (`rate`+100)";
Погуглил - вроде при добавлении в базу вообще нет параметра WHERE, что не может не расстраивать :|

Как бы мне это реализовать?
Аватара пользователя
bodnar
Модератор
Модератор
Сообщения: 1399
Зарегистрирован: 03 апр 2010, 06:41

Re: Вопрос по mysql

Сообщение bodnar »

Код: Выделить всё

INSERT INTO users (id,rate) VALUES($viewer_id,'100') ON DUPLICATE KEY UPDATE  `rate` = (`rate`+100)
Alazaur
Разработчик
Разработчик
Сообщения: 1001
Зарегистрирован: 16 окт 2011, 20:25

Re: Вопрос по mysql

Сообщение Alazaur »

Богдан, для INSERT WHERE и не нужен, он же добавляет новую строку, с чем ему сравнивать, если добавляемой строки еще нет) Вам нужен UPDATE.

Код: Выделить всё

$query = "UPDATE users SET rate = rate + 100 WHERE userid = " . $userid;
Nikola_B
Сообщения: 5
Зарегистрирован: 03 июн 2011, 12:35

Re: Вопрос по mysql

Сообщение Nikola_B »

добрый день, тема вопроса вроде подходящая, спрошу тут, такой запрос:

Код: Выделить всё

$query = 'UPDATE `stat` SET `karts`="'.$karts.'" WHERE `uid`='.$viewer_id.'';
тип столбца karts - TEXT или char, без разницы для меня, при обновлении или новом заходе в приложение, данные ячеки заменяются, но если в приложении несколько раз делаешь данный запрос, то он не заменяет, а добавляет к текстовой строке, подскажите как это избежать, уже часов 8 ковыряюсь.
ktibo
Сообщения: 38
Зарегистрирован: 15 авг 2011, 10:58

Re: Вопрос по mysql

Сообщение ktibo »

Nikola_B, в вашей строчке кода значение переменной картс нормальное? уже после запроса значение в ячейке другое?
Nikola_B
Сообщения: 5
Зарегистрирован: 03 июн 2011, 12:35

Re: Вопрос по mysql

Сообщение Nikola_B »

да, значение в ячейке все как надо, другое, толи как то с сессией связано, но не пойму как это отражается в запросе к БД, сейчас пытаюсь сделать что то наподобие

Код: Выделить всё

$query = 'UPDATE `stat` SET `karts`= REPLACE(`karts`,`karts`,"'.$karts.'") WHERE `uid`='.$viewer_id.'';
эффект такой же, если не выходя из приложения сделать повторный вопрос, значения просто добавляются.

......чуть позже допетрил....во флеше переменная добавляется...спасибо за наводку, полезу искать)
Ответить