小编典典

防止数据库中重复

sql

$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();
}

每次我通过贝宝付款时,我的信息都会在数据库中捕获,但我想防止重复。那么我该如何解决呢?还是应该检查电子邮件重复项?

编辑 据我所知,pinnaclecart将uid设置为primary。所以将它设置为唯一不是“危险”吗?


阅读 148

收藏
2021-04-14

共1个答案

小编典典

名字和姓氏都很好,但是除了唯一之外,其他一切都没有。我认识几个与我同名的人,因此我猜想在这两列上建立唯一索引只会令人沮丧,而无济于事。但是,使我与众不同的是,我是唯一同时拥有我的电子邮件地址和密码的人,因此,我认为这是一个更好的候选人。

ALTER TABLE users ADD UNIQUE unique_emailaddress ( email );

这至少应该对某些重复项有所帮助,但不是对所有重复项都有帮助:用户可能有多个电子邮件地址(我知道我是这样做的;)),但它仍然比名字和姓氏(不是唯一的)的任意组合更好完全没有。

2021-04-14