处理重复条目的错误 - PHP MySQL

时间:2010-06-30 06:09:03

标签: php mysql error-handling

我有一个PHP表单,可以将数据输入我的MySQL数据库。我的主键是用户输入的值之一。当用户输入表中已存在的值时,将返回MySQL错误“密钥1的重复条目输入值”。 而不是那个错误,我想提醒用户他们需要输入不同的值。只是回应的消息或其他东西。 我想我的问题归结为: 如何将特定的MySQL错误转换为PHP消息 感谢

编辑:下面的nickf答案很好,但有没有办法辨别具体的错误?

5 个答案:

答案 0 :(得分:47)

要检查此特定错误,您需要找到error code。重复键为1062。然后使用errno()的结果与:

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

关于编程风格的说明
你应该总是试图避免使用magic numbers(我知道,我是在这个答案中介绍它的人)。相反,您可以将已知错误代码(1062)分配给常量(例如MYSQL_CODE_DUPLICATE_KEY)。这将使您的代码更易于维护,因为if语句中的条件在1062的含义从内存中消失后的几个月内仍然可读:)

答案 1 :(得分:3)

执行插入时,可以检查mysql_query的返回值。

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

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

答案 2 :(得分:2)

尝试此代码来处理重复的条目并显示echo消息:

pickerViewArray

答案 3 :(得分:1)

使用 mysql_error()功能 http://php.net/manual/en/function.mysql-error.php

答案 4 :(得分:0)

使用mysql_errno()函数,它返回错误号。重复键的错误号是1062。 例如

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