Добавить 1 к значению в поле (SQLite + PDO)

alexz15

Постоялец
Регистрация
3 Окт 2008
Сообщения
394
Реакции
194
Приветствую! Второй день не могу понять, почему добавляется +2 вместо +1:
Код:
UPDATE table SET foo=foo+1 WHERE bar=1
Помогите плз решить задачу. Вот код:
PHP:
<?php
 
    $key = 1;
 
    $db = gb_open('db_users'); // создаем базу
 
    gb_add($db, $key, 5); // добавляем старт счетчика +5
 
    gb_repl($db, $key); // прибавляем к счетчику +1
 
    $q_key = $db->query("SELECT * FROM db_users WHERE key='$key'");
    $row_key = $q_key->fetchAll();
    print_r($row_key[0]['counts']);
           
function gb_open($db){
    $my_database = $db . ".db";
    $db = new PDO('sqlite:'.$my_database); 
    $db->exec("CREATE TABLE db_users("
        . "id INTEGER PRIMARY KEY, "
        . "key TEXT, "
        . "counts INTEGER);"
    );       
    return $db;
}
 
function gb_add($db, $key, $counts = 5) {
    $db->exec("INSERT INTO db_users "
    . "(id, key, counts)"
    . " VALUES (NULL, '$key', '$counts')");
}
 
function gb_repl($db, $key) {
    return $db->exec("UPDATE db_users SET "
        . "counts=counts+1 "
        . "WHERE key='$key'"
    );
}
 
Работает корректно - добавляется +1.
Скрытое содержимое доступно для зарегистрированных пользователей!
 
Работает корректно - добавляется +1.
Благодарю!) Оказывается браузер firefox дважды запрашивал страницу. Отключил плагин RDS bar - заработало как надо. А что можно придумать, чтобы блокировался двойной запрос?
 
Благодарю!) Оказывается браузер firefox дважды запрашивал страницу. Отключил плагин RDS bar - заработало как надо. А что можно придумать, чтобы блокировался двойной запрос?
Если задвоение от двух запросов к странице - добавьте базе поля дата-тайм и IP, контролируя плюсование по ним.
Например, плюсик будет только раз в сутки или раз в минуту с одного IP.
 
А мне нужно в базе данных на все товары добавить к ценнам +1000р. Как это сделать?Можно как-то запросом в mySQL?
 
Назад
Сверху