如何通过PHP更新/插入MySQL表中的数据

问题描述:

我是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

所以,你只需要每个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