Короче говоря, вам нужно выполнить проверку с помощью PHP, а также добавить сложное уникальное ограничение в таблицу MySQL, чтобы получить лучшее из обоих миров.
было бы хорошо, если бы мы разбили ваш вопрос на два отдельных вопроса.
1- Как проверить дубликаты с помощью PHP и оповестить пользователя перед выполнением запроса?
2- Как мне указать составное уникальное ограничение в MySQL?
Во-первых, вам нужна простая функция PHP, чтобы проверить, существует ли эта запись в БД или нет, как показано ниже:
function is_exist($table, $data){
$sql = "SELECT * FROM `" . $table . "` WHERE ";
foreach ($data as $key => $val) :
$sql .= "`$key`='" . $val . "' AND ";
endforeach;
$sql = substr($sql,0, -5);
$result = $mysql_query($sql);
$count = $mysql_num_rows($result);
return ($count > 0) ? true: false;
}
Вы должны вызвать вашу функцию PHP следующим образом:
$data = array('column1'=>$_POST['value'],'column2'=>$_POST['value'], ...);
if(is_exist($data)){
// Print your error message
}else{
// Run your insert query
}
Таким образом, вы можете предотвратить дублирование перед переходом в базу данных MySql, но для того, чтобы иметь дублированную бесплатную базу данных, вам нужно добавить составное уникальное ограничение в таблицу MySQL.
Эта простая команда SQL может помочь:
alter table `tablename` add unique index(name, description, manufacturer, city, price, enddate);
Надеюсь, это поможет, если я что-то испорчу, пожалуйста, обремените меня.