Страница 1 из 1

Вопрос по mysql

Добавлено: 14 янв 2013, 14:55
Богдан
Есть поле рейтинга в таблице. Я пытаюсь обновить это поле, добавив к значению 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, что не может не расстраивать :|

Как бы мне это реализовать?

Re: Вопрос по mysql

Добавлено: 14 янв 2013, 15:10
bodnar

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

INSERT INTO users (id,rate) VALUES($viewer_id,'100') ON DUPLICATE KEY UPDATE  `rate` = (`rate`+100)

Re: Вопрос по mysql

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

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

$query = "UPDATE users SET rate = rate + 100 WHERE userid = " . $userid;

Re: Вопрос по mysql

Добавлено: 14 апр 2013, 09:58
Nikola_B
добрый день, тема вопроса вроде подходящая, спрошу тут, такой запрос:

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

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

Re: Вопрос по mysql

Добавлено: 14 апр 2013, 10:48
ktibo
Nikola_B, в вашей строчке кода значение переменной картс нормальное? уже после запроса значение в ячейке другое?

Re: Вопрос по mysql

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

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

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

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