считая количество обновлений строки в моей таблице MySQL - PullRequest
0 голосов
/ 05 мая 2009

У меня есть простая база данных mysql, и я использую этот код PHP для ее обновления.

mysql_query("REPLACE INTO `$db_table` (username, live, datetime, ip) 
VALUES ('$username', '1', '$timeofentry', '$ip')");

Я использую REPLACE INTO вместе с первичным ключом «username», чтобы позволить пользователям подняться на вершину самого последнего списка ...

Я бы хотел добавить количество ударов. Количество раз, когда запись была обновлена ​​(или «заменена на»).

Как бы я поступил так?

Большое спасибо!

Ответы [ 3 ]

2 голосов
/ 05 мая 2009

Вы можете использовать INSERT ... ON DUPLICATE KEY UPDATE , который выполняет фактическое обновление существующих строк.

$mysql = mysql_connect(..
...
$username = mysql_real_escape_string(...
$ip = mysql_real_escape_string(...
...
$query = "
  INSERT INTO
    `$db_table`
    (username, live, datetime, ip) 
  VALUES
    (
      '$username',
      '1',
      '$timeofentry',
      '$ip'
    )
  ON DUPLICATE KEY UPDATE
    ip = '$ip',
    bumpCount = bumpCount + 1
";

$result = mysql_query($query, $mysql);
2 голосов
/ 05 мая 2009

Во-первых, вам нужно добавить еще один столбец в таблицу, чтобы сохранить счет.

Во-вторых, вам, вероятно, следует использовать инструкцию UPDATE вместо REPLACE.

REPLACE фактически удалит строку, а затем вставит новую, которая не очень эффективна.

UPDATE `$db_table` SET datetime = NOW(), ip = '$IP', 
        bumpCount = bumpCount + 1 WHERE username = '$username' LIMIT 1;
0 голосов
/ 06 мая 2009

@ точка

Вы бы определили свое поле bumpCount как другой столбец в таблице. Я бы также порекомендовал установить его в значение по умолчанию.

Тогда определение вашей таблицы будет примерно таким:

CREATE TABLE my_table
 (username varchar(255) not null primary key,
  live int,
  datetime datetime not null,
  ip varchar(15) not null,
  bumpCount int unsigned not null default 1);

А ваша вставка / обновление будет выглядеть примерно так:

INSERT INTO my_table (username,live,datetime,ip) 
  VALUES
    ('$username',1,now(),'$ip')
  ON DUPLICATE KEY UPDATE datetime=now() ip='$ip', bumpCount=bumpCount + 1;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...