2011-07-03 188 views
0

我在我的數據庫中創建了一個唯一的字段。考慮專輯名稱是唯一的。我已成功添加約束條件,如果用戶嘗試添加具有該名稱的其他專輯,他將收到該記錄已存在的錯誤消息。因此,用戶不得添加任何具有相同名稱的其他記錄。邏輯幫助

但現在我有問題,如果他們有3條存在於數據庫名稱a,b,c.和用戶更新任何領域比他可以更新記錄ba名,這樣他們就會有兩個記錄數據庫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 
} 

但我有問題,與每一個頁面加載的更新用我需要選擇不同的專輯名稱。因爲它會顯示相冊存在味精。有時候我可能會想改變其他信息,比如發行年份,全部曲目等專輯名稱。但是使用這個腳本如果我想更新第一個字段,我需要先更改專輯名稱。請幫助解決這個問題。因此該專輯名稱可能不會在數據庫中重複,並且我可以更新名稱以外的其他信息。

+1

'font'標記?!真? –

+0

aditii,字體標籤已被長期棄用...嘗試使用帶CSS ID和類的span標籤。 –

回答

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!="") { 
... 
} 
... 

1

您需要在數據庫級別強制執行唯一性約束。這樣,數據庫將拒絕任何操作,該操作將創建具有相同鍵的記錄。對於現有的表做

一種方法是使用ALTER TABLE命令:

ALTER TABLE myalbums ADD UNIQUE (albumname);