MySQL: вставьте, если этот ip не имеет записей

Я использую:

INSERT INTO `rating` (`name`, `user`, `rating`, `section`, `ip`) VALUES ('$name', '{$_SESSION['user']}', '$rate', '$section', '{$_SERVER['REMOTE_ADDR']}');"; 

Я хотел бы добавить условие if в выражении IF так, чтобы.

 IF SELECT ip from rating where ip={$_SERVER['REMOTE_ADDR']} AND section=$section AND name=$name then update ELSE INSERT new row 

это выполнимо, или я лучше закодирую его в php? Большое спасибо

Ps: Я знаю, как это сделать с php, я хочу изучить его с помощью MySQL.

Также я требую, чтобы все 3 имени, раздела, ip соответствовали не только ip

Чтобы расширить отличный ответ Эрика.

Чтобы добавить уникальное ограничение для каждого из столбцов ip, name, section, запустите следующий код в базе данных

 ALTER TABLE `test`.`rating` ADD UNIQUE INDEX `name`(`name`), ADD UNIQUE INDEX `section`(`section`), ADD UNIQUE INDEX `ip`(`ip`); 

Для запуска уникального ограничения на комбинацию столбцов ip + name + section выполните:

 ALTER TABLE `test`.`rating` ADD UNIQUE INDEX `name_section_ip`(`name`, `section`, `ip`); 

Последнее, вероятно, то, что вы хотите.

Одна последняя вещь
Я не уверен на 100%, но это использование {$_SERVER['REMOTE_ADDR']} в запросе не выглядит безопасным для SQL-инъекций.
Подумайте об этом:

 $remote_adr = mysql_real_escape_string($_SERVER['REMOTE_ADDR']); $session = mysql_real_escape_string($_SESSION['user']); $query = "INSERT INTO `rating` (`name`, `user`, `rating`, `section`, `ip`) VALUES ('$name', '$session', '$rate', '$section','$remote_adr')"; 

Наконец, положив ";" в mysql_query() как и mysql_query("select * from x;"); не работает mysql_query() будет выполнять только один запрос и отклонит ваш ; ,

Предполагая, что у вас есть уникальное ограничение ( UNIQUE index или PRIMARY KEY ) на ip, разделе и имени, вы можете использовать этот синтаксис:

 INSERT INTO `rating` (`name`, `user`, `rating`, `section`, `ip`) VALUES ('$name', '{$_SESSION['user']}', '$rate', '$section', '{$_SERVER['REMOTE_ADDR']}') ON DUPLICATE KEY UPDATE user = VALUES(user), rating = VALUES(rating);