帮助逻辑

时间:2011-07-03 04:32:38

标签: php mysql sql

我在我的数据库中创建了一个唯一的字段。考虑专辑名称是唯一的。我已成功添加约束,如果用户尝试添加具有该名称的其他相册,他将收到记录已存在的错误消息。因此用户可能不会添加任何其他具有相同名称的记录。

但是现在我有问题,如果他们的3条记录存在于名为a,b,c.的数据库中并且用户正在更新任何字段而不是更新记录b作为a的名称,那么他们将是a数据库中的两条记录。 &安培;我想创造它独特。为此,我使用脚本..

if($name!="") {
  $sql = "select a_name from t_a_list where a_name = '$name'";
  $result = mysql_query($sql);

  if(mysql_num_rows($result) != 0) {
    $msg = "<font color=red>Record Not Saved. Album already Exist!</font>";
  }
} else {
  $msg = "<font color=red>Enter Name of Album!</font>";
}

if($msg=="") {
//Update Query
}

但我有问题,每个页面加载更新我需要为相册选择不同的名称。因为它会显示专辑存在的消息。有时我可能想要更改除了专辑名称之外的其他信息,例如发行年份,总曲目。但是使用这个脚本如果我想更新第一个字段,我需要先更改相册名称。请帮助解决这个问题。因此,专辑名称可能不会在DB中重复,我可以更新名称以外的其他信息。

2 个答案:

答案 0 :(得分:1)

您需要在数据库级别强制执行唯一性约束。这样,数据库将拒绝任何操作,该操作将创建具有相同键的记录。

对现有表执行此操作的一种方法是使用ALTER TABLE命令:

 ALTER TABLE myalbums ADD UNIQUE (albumname);

答案 1 :(得分:1)

您可以将oldname保存在变量中,并在更新时首先检查

if($name!=$oldname) { ... 
。 这样,除非更改名称,否则不会更新名称,并且将更新其他字段
$oldname = THE NAME OF THE ALBUM BEING EDITED
....
if($name!=$oldname) {
 if($name!="") {
 $sql = "select a_name from t_a_list where a_name = '$name'";
 $result = mysql_query($sql);
 if(mysql_num_rows($result) != 0) {
     $msg = "Record Not Saved. Album already Exist!";
 }
 } else {
 $msg = "Enter Name of Album!";
 }
 if($msg=="") {
 //Update Query
 }
}
if($description!="") {
....
}
if($location!="") {
...
}
...