2011-06-01 121 views
1
$db->query("SELECT * FROM ".DB_PREFIX."users WHERE uid='".$uid_id."' AND login='ExpressCheckoutUser'"); 
       if ($db->moveNext()) 
       { 

$db->assignStr("address1", $_REQUEST['address_street']); 
$db->assignStr("city", $_REQUEST['address_city']); 
$db->assignStr("state", $_REQUEST['address_state']); 
$db->assignStr("fname", $_REQUEST['first_name']); 
$db->assignStr("lname", $_REQUEST['last_name']); 
$db->assignStr("email", $_REQUEST['payer_email']); 

$db->assignStr("country", $country_code); 
$db->assignStr("zip", $_REQUEST['address_zip']); 
$db->update(DB_PREFIX."users", "WHERE uid='".$uid_id."'"); 
$db->reset(); 
} 

每當我通過PayPal進行支付時,我的信息將被捕獲在數據庫中,但我想防止重複。那麼我該如何繞過它呢?或者我應該檢查電子郵件重複?防止數據庫中的重複項

編輯 據我所知,uid被pinnaclecart設置爲primary。因此將其設置爲唯一而不是「危險」的呢?

+1

你使用什麼數據庫。使你的'uid'獨特,你會受到重複保護。 – Nemoden 2011-06-01 05:08:04

+0

最好的選擇是在你的表上啓用唯一的約束 – Phil 2011-06-01 05:08:25

+0

@Nemoden,你是什麼意思是我用什麼數據庫?它正在使用巔峯數據庫。表用戶的uid應該設置爲唯一的? – joe 2011-06-01 05:12:01

回答

0

姓和名都很好,但一切都很獨特。我知道有幾個人和我有同樣的名字,所以我想在這兩列上建立一個獨特的索引只會讓人失望,而不是幫助。這個讓我獨一無二的東西是我是唯一一個擁有我的電子郵件地址和密碼的人,所以我認爲這將是一個更好的選擇。

ALTER TABLE users ADD UNIQUE unique_emailaddress (email); 

這至少應該有一些重複的幫助,但不是所有的:用戶可以擁有多個電子郵件地址(我知道我這樣做;)),但仍低於第一的任意組合更好,姓氏根本不是唯一的。

-1

在數據庫中創建一個UNIQUE索引。

0

如果你需要的是一個唯一的列,你可以這樣做:

ALTER TABLE `users` ADD UNIQUE `lname`(fname); 

如果設置一個列獨特的,只會讓該列獨特的,所以如果你有兩個人,一個命名爲「John Smith」,另一個命名爲「Jane Smith」,lname上的UNIQUE將導致第二個失敗。如果您分別在名字和姓氏兩個字段上設置UNIQUE鍵,那麼在名字或姓氏相同的情況下,您將失敗。

您可能反而希望添加複合鍵來強制跨多個字段組合的唯一性。對於這一點:

ALTER TABLE `users` ADD UNIQUE `unique_key`(fname,lname); 

這將迫使在數據庫中的一個約束,如果你試圖創建具有相同的名字和姓氏重複記錄,將拋出一個錯誤。

你可以在出錯時拋出異常,並在代碼庫中處理這些更高的內容,或者你可以只看到你有錯誤並選擇忽略它。

0

考慮到上次編輯它說

UID是pinnaclecart設置爲主。因此將其設置爲唯一而不是「危險」的呢?

在這種情況下,不要這樣做。並且根本不做任何事情,PRIMARY KEY默認爲UNIQUE,所以它不能被複制。