2

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

我有一个向 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.");
}

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

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

希望这是有道理的,非常感谢任何帮助。

4

5 回答 5

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。

于 2013-01-19T10:01:38.060 回答
1

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

  1. 首先,您需要“ID”字段中的主键(auto_increment)
  2. 当您执行插入查询时,首先检查记录是否可用。如果不可用,则仅您应该执行插入查询。
  3. 使用主键字段进行更新、删除等...

如果您按照上述步骤操作,则永远不会遇到此问题

于 2013-01-19T10:07:12.550 回答
0

您是否正在检查insertupdate语句中的重复事件?如果是这样,你不应该。重复条目仅在“插入”时相关。您不应该对update. 希望有帮助。

于 2013-01-19T10:01:11.520 回答
0

编辑我通过使 $productcode 字段成为唯一索引解决了这个问题。现在编辑时如果有重复..

mysql不接受更新查询,返回错误码

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

如果(mysql_errno()=='1062')

adminwarnmessage("DUPLICATE REFERENCE CODE","FAILURE - $product_name has not been added because the reference number already exists");

} adminmessage("项目更新", 恭喜您成功更新 $productname");

}

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

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

于 2013-01-19T12:47:41.560 回答
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

于 2013-01-19T10:03:47.420 回答