我在我的数据库中创建了一个唯一的字段。考虑专辑名称是唯一的。我已成功添加约束,如果用户尝试添加具有该名称的其他相册,他将收到记录已存在的错误消息。因此用户可能不会添加任何其他具有相同名称的记录。
但是现在我有问题,如果他们的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中重复,我可以更新名称以外的其他信息。
答案 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!="") {
...
}
...