Подтвердить что ты не робот

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

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

edit: nickf answer below хорошо, но есть ли способ распознать определенные ошибки?

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

$result = mysql_query("INSERT INTO mytable VALUES ('dupe')");

if (!$result) {
    echo "Enter a different value";
} else {
    echo "Save successful.";
}

Ответ 4

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

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

Ответ 5

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

  $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