2014-09-13 6 views
-1

Я новичок в PHP. Мне нужна помощь, чтобы сделать PHP-код для обновления данных в MySQL, если данные существуют и если их еще нет, тогда вставьте данные в MySQL. . Я сделал PHP код, чтобы сделать это, но это вставка данных, когда данные уже есть .. в MySQL .. Пожалуйста, помогитеКак обновить/вставить данные в таблицу MySQL через PHP

$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? –

+0

Не давать ошибку .. если переменная пуста –

+0

@u_mulder? help me plz .. –

ответ

0

Итак, вы хотите только одна запись на уникальной комбинации IP, порт и Sgame? Самый простой способ - позволить mysql справиться с этим.

Сначала создайте уникальный индекс в таблице для этих полей. Выполните следующие действия в MySQL:

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

Затем, вместо выполнения запроса INSERT, используйте REPLACE. Так что просто изменить одну строку в PHP:

UPDATE servers 

к

REPLACE INTO servers 
+0

Я не понял эту технику. Пожалуйста, объясните далее –

+0

Пожалуйста, помогите мне .. Пожалуйста, объясните подробнее –

Смежные вопросы