Ошибка обработки для повторяющихся записей – PHP MySQL

У меня есть PHP-форма, которая вводит данные в мою базу данных MySQL. Мой первичный ключ – это одно из введенных пользователем значений. Когда пользователь вводит значение, которое уже существует в таблице, возвращается ошибка MySQL «Дублирующая запись», введенное значение «для ключа 1». Вместо этой ошибки я хотел бы предупредить пользователя о необходимости вводить другое значение. Просто эхо-сообщение или еще что-то. Я думаю, мой вопрос сводится к: как превратить определенную ошибку MySQL в сообщение PHP Спасибо

edit: ответ nickf ниже – это хорошо, но есть ли способ распознать определенные ошибки?

Чтобы проверить эту ошибку, вам необходимо найти код ошибки . Это 1062 для дублирующего ключа. Затем используйте результат из errno() для сравнения с:

 mysql_query('INSERT INTO ...'); if (mysql_errno() == 1062) { print 'no way!'; } 

Заметка о стиле программирования
Вы всегда должны стремиться избегать использования магических чисел (я знаю, я был тем, кто представил его в этом ответе). Вместо этого вы можете присвоить известному коду ошибки ( 1062 ) константе (например, MYSQL_CODE_DUPLICATE_KEY ). Это упростит работу вашего кода, так как условие в выражении if еще можно прочитать за несколько месяцев, когда значение 1062 исчезло из памяти 🙂

Вы можете проверить возвращаемое значение из mysql_query когда вы вставляете.

 $result = mysql_query("INSERT INTO mytable VALUES ('dupe')"); if (!$result) { echo "Enter a different value"; } else { echo "Save successful."; } 

С помощью функции mysql_error () http://php.net/manual/en/function.mysql-error.php

Используйте mysql_errno() , она возвращает номера ошибок. Номер ошибки для повторяющихся ключей – 1062. Например

 $query = mysql_query("INSERT INTO table_name SET ...); if (mysql_errno() == 1062){ echo 'Duplicate key'; } 

попробуйте этот код для обработки повторяющихся записей и покажите эхо-сообщение:

  $query = "INSERT INTO ".$table_name." ".$insertdata; if(mysqli_query($conn,$query)){ echo "data inserted into DB<br>"; }else{ if(mysqli_errno($conn) == 1062) echo "duplicate entry no need to insert into DB<br>"; else echo "db insertion error:".$query."<br>"; }//else end