Вопрос по mysql

Программирование, которое не связано с API и Flash.

Вопрос по mysql

Сообщение Богдан » 14 янв 2013, 14:55

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

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

  1. $query = "INSERT INTO users  (rate) VALUES ('100') ON DUPLICATE KEY UPDATE  `rate` = (`rate`+100)";


Когда пытаюсь присвоить значение определенному юзверю - ничего не происходит. Делаю так:

  1. $query = "INSERT INTO users WHERE uid=$viewer_id (rate) VALUES ('100') ON DUPLICATE KEY UPDATE `rate` = (`rate`+100)";


Погуглил - вроде при добавлении в базу вообще нет параметра WHERE, что не может не расстраивать :|

Как бы мне это реализовать?
Аватара пользователя
Богдан

 
Автор темы
Сообщения: 21
Зарегистрирован: 26 дек 2010, 05:22
Благодарил (а): 4 раз.
Поблагодарили: 2 раз.

Чтобы убрать блок с рекламой, зарегистрируйтесь на форуме или войдите.

Google
 



Re: Вопрос по mysql

Сообщение bodnar » 14 янв 2013, 15:10

  1. INSERT INTO users (id,rate) VALUES($viewer_id,'100') ON DUPLICATE KEY UPDATE  `rate` = (`rate`+100)
Обязательно к прочтению: ActionScript 3.0 Ошибки среды выполнения

За это сообщение автора bodnar поблагодарил:
Богдан
Аватара пользователя
bodnar
Модератор
Модератор
 
Сообщения: 1399
Зарегистрирован: 03 апр 2010, 06:41
Благодарил (а): 16 раз.
Поблагодарили: 185 раз.

Re: Вопрос по mysql

Сообщение Alazaur » 14 янв 2013, 16:18

Богдан, для INSERT WHERE и не нужен, он же добавляет новую строку, с чем ему сравнивать, если добавляемой строки еще нет) Вам нужен UPDATE.
  1. $query = "UPDATE users SET rate = rate + 100 WHERE userid = " . $userid;

За это сообщение автора Alazaur поблагодарил:
Богдан
Alazaur
Разработчик
Разработчик
 
Сообщения: 1001
Зарегистрирован: 16 окт 2011, 20:25
Благодарил (а): 24 раз.
Поблагодарили: 121 раз.

Re: Вопрос по mysql

Сообщение Nikola_B » 14 апр 2013, 09:58

добрый день, тема вопроса вроде подходящая, спрошу тут, такой запрос:
  1. $query = 'UPDATE `stat` SET `karts`="'.$karts.'" WHERE `uid`='.$viewer_id.'';

тип столбца karts - TEXT или char, без разницы для меня, при обновлении или новом заходе в приложение, данные ячеки заменяются, но если в приложении несколько раз делаешь данный запрос, то он не заменяет, а добавляет к текстовой строке, подскажите как это избежать, уже часов 8 ковыряюсь.
Nikola_B

 
Сообщения: 5
Зарегистрирован: 03 июн 2011, 12:35
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.

Re: Вопрос по mysql

Сообщение ktibo » 14 апр 2013, 10:48

Nikola_B, в вашей строчке кода значение переменной картс нормальное? уже после запроса значение в ячейке другое?

За это сообщение автора ktibo поблагодарил:
Nikola_B
ktibo

 
Сообщения: 38
Зарегистрирован: 15 авг 2011, 10:58
Откуда: Хабаровск
Благодарил (а): 7 раз.
Поблагодарили: 2 раз.

Re: Вопрос по mysql

Сообщение Nikola_B » 14 апр 2013, 11:08

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

эффект такой же, если не выходя из приложения сделать повторный вопрос, значения просто добавляются.

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

 
Сообщения: 5
Зарегистрирован: 03 июн 2011, 12:35
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.


Вернуться в Программирование на PHP и других языках (без использования API)



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0