在MySQL中编辑记录时检查重复

时间:2013-01-19 09:54:59

标签: php mysql database duplicates

我遇到了一段代码问题,并想知道是否有人可以提供帮助。

我有一个向MySQL数据库提交信息的表单,我有正确的代码用于检查提交的产品代码是否已经存在,如果是,则显示警告消息并且未添加记录。

该代码是:

$result = mysql_query("SELECT * FROM listing_1 WHERE product_code='$product_code'");
$num_rows = mysql_num_rows($result);
if ($num_rows) {
   adminwarnmessage("DUPLICATE REFERENCE CODE","FAILURE - <b>$product_name</b> has <b>NOT</b> been added because the reference number already exists.");
}

这适用于数据输入,但是我有另一种形式允许用户编辑记录,这是导致我出现问题的原因,因为上面的代码只告诉我数据库中已有匹配的记录,当然,当我尝试保存(更新)记录时,它现在告诉我我不能,因为它是重复的。

我想要发生的是它不允许用户选择已经存在的其他产品代码,但我希望他们能够使用从数据库中提取的表单相同的产品代码来更新记录。

希望有意义,任何帮助都非常感激。

5 个答案:

答案 0 :(得分:1)

如果您有id(主键),则必须在更新记录之前与该产品的ID进行比较。例如

$result = mysql_query("SELECT * FROM listing_1 WHERE product_code='$product_code' AND id!=$id"); 
$num_rows = mysql_num_rows($result); 
if ($num_rows) { 
    echo "duplicate record";
}

此处$ id是编辑记录时应具有的产品ID。

答案 1 :(得分:1)

以下是管理数据库时需要遵循的步骤

  1. 首先,您需要“ID”字段中的主键(auto_increment)
  2. 当您执行插入查询时,首先检查记录已经存在的位置。如果不可用,则只应执行插入查询。
  3. 使用主键提交更新,删除等...
  4. 如果您按照上述步骤操作,则表示您从未遇到过此问题

答案 2 :(得分:0)

您是否可能在insertupdate声明中检查重复出现次数?如果是这样,你不应该。重复输入仅在“插入”时相关。您不应对update使用相同的检查。希望有所帮助。

答案 3 :(得分:0)

为什么同样的代码也要更新?您可以使用另一个查询进行更新,如果以后遇到问题,可以更好地进行调试。试试这个

$result = mysql_query("UPDATE listing_1 SET product_code='$new_product_code' WHERE product_code='$product_code' AND id='$id'");
if($result) {
   echo "your product was updated.";
} else {
   echo "your product is not in DB";
}

编辑:在更新或插入内容时要小心,除非id是唯一的,否则请始终product_code进行检查

答案 4 :(得分:0)

EDIT 我已经通过将$ productcode字段作为唯一索引解决了这个问题。 现在编辑时是否有重复..

Mysql不接受更新查询,它返回错误代码

我捕获了该错误代码并将其包含在if语句中......

if(mysql_errno()=='1062')

adminwarnmessage(“DUPLICATE REFERENCE CODE”,“FAILURE - $ product_name 已添加 NOT ,因为参考编号已存在”);

} adminmessage(“项目已更新”,恭喜您成功更新了$ productname“);

}

现在允许编辑$ productcode,但不允许将其更改为数据库中已使用的产品。

感谢所有花时间提供帮助的人