2014-09-13 130 views
-1

我是PHP新手..如果數據存在並且如果尚未存在,則需要幫助來創建PHP代碼以更新MySQL中的數據,然後在MySQL中插入數據。我所做的PHP代碼要做到這一點,但是當數據已經存在它是將數據插入..在MySQL ..請幫助如何通過PHP更新/插入MySQL表中的數據

$con = mysql_connect('localhost','root','root'); 
$db = mysql_select_db('gamingtracker',$con); 
$query = "SELECT * FROM servers WHERE sgame='$game_insert'"; 
    $result = mysql_query($query, $con); 
While($row = mysql_fetch_array($result)) { 
$id = @$row['id']; 
$sname = @$row['sname']; 
$sgame = @$row['sgame']; 
$minplayers = @$row['minplayers']; 
$maxplayers = @$row['maxplayers']; 
$ip = @$row['ip']; 
$port = @$row['port']; 
$map = @$row['map']; 
} 



$sname1= html_entity_decode("{$server['s']['name']}"); 

     if(@$sname=="{$server['s']['name']}" 
     AND @$sgame=="{$server['s']['game']}" 
     AND @$minplayers=="{$server['s']['players']}" 
     AND @$maxplayers=="{$server['s']['playersmax']}" 
     AND @$ip=="{$server['b']['ip']}" 
     AND @$port=="{$server['b']['c_port']}" 
     AND @$map=="{$server['s']['map']}") 
     { 
    $query1 = "UPDATE servers 
    SET sname='$sname1', sgame='{$server['s']['game']}', minplayers='{$server['s']['players']}', maxplayers='{$server['s']['playersmax']}', ip='{$server['b']['ip']}', port='{$server['b']['port']}', map='{$server['s']['map']}' 
    WHERE ip='{$server['b']['ip']}', port='{$server['b']['port']}', sgame='{$server['s']['game']}'"; 
    $result1 = mysql_query($query1, $con); 
    } 
     else { 
    $query1 = "INSERT INTO servers (id,sname,sgame,maxplayers,minplayers,ip,port,map) VALUES ('','$sname1','{$server['s']['game']}','{$server['s']['players']}','{$server['s']['playersmax']}','{$server['b']['ip']}','{$server['b']['c_port']}','{$server['s']['map']}')"; 
    $result1 = mysql_query($query1, $con); 
    } 
+0

爲什麼要補充'@'everyhwere? – 2014-09-13 19:27:40

+0

要不要錯誤..如果變量爲空 – 2014-09-13 19:28:30

+0

@u_mulder?幫助我plz .. – 2014-09-13 19:37:32

回答

0

所以,你只需要每個IP,端口和sgame的獨特組合的一個條目?最直接的方法是讓MySQL處理這個問題。

首先,在表格中爲這些字段創建唯一索引。在mysql中運行以下代碼:

CREATE UNIQUE INDEX ip_port_sgame ON servers (ip, port, sgame); 

然後,使用REPLACE而不是運行INSERT查詢。因此,只要改變你的PHP這一行:

UPDATE servers 

REPLACE INTO servers 
+0

我不明白這項技術..請進一步解釋 – 2014-09-13 20:05:13

+0

請幫助我..請進一步解釋 – 2014-09-14 13:58:56