Benim mysql tabloda bir satır güncellemeleri sayısını sayma

3 Cevap php

Ben basit bir mysql DB var ve güncellemek için bu PHP kodu kullanabilirsiniz.

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

Kullanıcıların en son listenin en üstüne kendilerini çarpmak izin boyunca "username" bir birincil anahtar ile REPLACE INTO kullanabilirsiniz ...

Ben bir yumru sayısını eklemek istiyorum. Kaç kez giriş güncellenmiş (veya "içine değiştirildi") olmuştur.

Bunu nasıl yapıyor hakkında gitmek istiyorsunuz?

Thanks a lot!

3 Cevap

Varolan satır gerçek bir güncelleştirme gerçekleştirir INSERT ... ON DUPLICATE KEY UPDATE hangi kullanabilirsiniz.

$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);

İlk olarak, sayısını tutmak için tablo için başka bir sütun eklemeniz gerekir.

İkincisi, muhtemelen UPDATE deyimi kullanmak yerine DEĞİŞTİR gerekir.

DEĞİŞTİR aslında satırı silin, sonra çok verimli değil, yeni birini eklemek.

UPDATE `$db_table` SET datetime = NOW(), ip = '$IP', 
        bumpCount = bumpCount + 1 WHERE username = '$username' LIMIT 1;

@ Nokta

Siz tablodaki başka sütun gibi bumpCount alanı tanımlamak istiyorum. Ben de bir varsayılan değere ayarlanması tavsiye ederim.

Sonra tablo tanımı bazen gibi olacaktır:

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);

Ve ekleme / güncelleme gibi bir şey olurdu:

INSERT INTO my_table (username,live,datetime,ip) 
  VALUES
    ('$username',1,now(),'$ip')
  ON DUPLICATE KEY UPDATE datetime=now() ip='$ip', bumpCount=bumpCount + 1;