簡體   English   中英

在數據庫中使用 uniqid 保存和更新

[英]Save and update with uniqid in database

我試圖在數據庫中插入具有唯一 ID 的播放器。 這個 model 對我有用,但如果我給它一個密鑰更新,它會在我的數據庫中復制它。

選項1

$id = uniqid();  
$insert_player_query    = mysqli_query($db,"INSERT INTO players (id,nickname,score,time_online,mapname,sid) VALUES ('$id','$player_nickname','$player_score','$player_time','$mapname','$server_id') ON DUPLICATE KEY UPDATE score = score + VALUES(score), time_online = time_online + VALUES(time_online) WHERE id='$id'");

選項 2

然后我嘗試了,但它根本沒有插入任何東西

$id = uniqid();  
$sql=mysqli_query($db, "SELECT * FROM players WHERE nickname='$player_nickname'");

if (mysqli_num_rows($sql) > 0) 
    {
         $insert_player_query2  = mysqli_query($db,"UPDATE players (nickname,score,time_online,mapname,sid) VALUES ($player_nickname','$player_score','$player_time','$mapname','$server_id') WHERE id='$id'");   
                
    } else {
         $insert_player_query   = mysqli_query($db,"INSERT INTO players (id,nickname,score,time_online,mapname,sid) VALUES ('$id','$player_nickname','$player_score','$player_time','$mapname','$server_id') WHERE id='$id'");   
    }

        

您應該檢查字段並使用:

CREATE TABLE `players` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `nickname` varchar(100) DEFAULT NULL,
  `score` int(11) DEFAULT NULL,
  `time_online` varchar(100) DEFAULT NULL,
  `mapname` varchar(100) DEFAULT NULL,
  `sid` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uniq` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;


INSERT INTO players (id,nickname,score,time_online,mapname,sid) VALUES ('1','player_nickname','1','1','mapname','1') 
ON DUPLICATE KEY UPDATE score = score + VALUES(score), time_online = time_online + VALUES(time_online) 

請嘗試一下。

刪除“where”條件。 它在“INSERT”語句中沒有任何意義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM