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