更新数据库行

时间:2014-07-01 13:48:03

标签: php mysql sql database

我有一个带有唯一编号和徽章编号的数据库。徽章编号会改变,但唯一的编号不会。

|unique_number|badge_number|
|-------------|------------|
|1234         |2           |
|-------------|------------|

我希望能够在不创建新行的情况下更新与badge_number相关的unique_number(取消选中“唯一”键)。但目前我收到错误Error: Duplicate entry '1234' for key 'unique_number'

如果我发布此代码:

$sql="INSERT INTO table (unique_number, badge_number) VALUES ('1234', 1)";

我试过这个:

$sql="INSERT INTO push (unique_number) VALUES ('".$_POST['unique_number']."')";

$sql2="UPDATE table set badge_number= 0 where unique_number=".$_POST['unique_number']."";

  if (!mysqli_query($con,$sql))
  {
  echo'Error: ' . mysqli_error($con);
  }

  if (!mysqli_query($con,$sql2))
  {
  die('Error2: ' . mysqli_error($con));
  }

3 个答案:

答案 0 :(得分:2)

如果您将主键或唯一约束应用于列,则任何新数据的插入都必须根据该列验证数据的唯一性。所以我猜你有一个约束应用于unique_number列。

但是,当且仅当新数据验证现有数据时,您仍然会更改示例行的数据。

UPDATE table SET badge_number = 1 WHERE unique_number = '1234'

答案 1 :(得分:2)

INSERT查询负责在表中插入新记录。 因此,如果您尝试插入unique_number = 1234的新行,则会违反唯一键约束并生成错误错误:重复条目' 1234'对于key' unique_number'因为已经记录了这个unique_number = 1234。

如果要更新现有记录,可以使用更新查询来更新任何记录。 因此,如果您需要更新unique_number = 1234的记录,则需要使用以下查询:

UPDATE table_name SET badge_number = 3 WHERE unique_number = 1234

答案 2 :(得分:2)

如下所示?

$sql = "UPDATE table SET badge_number = '0' WHERE unique_number = '$_POST['unique_number']'";