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

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

править: ответ nickf ниже хорош, но является там каким-либо способом различить между определенными ошибками?

26
задан RobHardgood 30 June 2010 в 06:39
поделиться

3 ответа

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

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

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

48
ответ дан 28 November 2019 в 06:57
поделиться

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

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

if (!$result) {
    echo "Enter a different value";
} else {
    echo "Save successful.";
}
3
ответ дан 28 November 2019 в 06:57
поделиться

С функцией mysql_error () http://php.net/manual/en/function.mysql-error.php

1
ответ дан 28 November 2019 в 06:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: