使用PHP和MySQL的UNIQUE如何像京東注冊(cè)那樣保證用戶名唯一?
問(wèn)題描述
我認(rèn)為這么快的判斷用戶名重復(fù)是通過(guò)設(shè)置用戶名字段UNIQUE,然后寫入捕獲異常來(lái)實(shí)現(xiàn)的。但我嘗試了一下,發(fā)現(xiàn)實(shí)際操作起來(lái)并沒(méi)有那么簡(jiǎn)單,如果要求用戶名唯一就去寫表看異常,如果重復(fù)了可以返回false,但成功的話寫入的數(shù)據(jù)是不完整的,我們真正需要的是將用戶提交的注冊(cè)信息一起寫表,我想了一下,這個(gè)操作只能通過(guò)事務(wù)來(lái)實(shí)現(xiàn)了,通過(guò)事務(wù)只要不commit,就不會(huì)真正的寫表,但我們已經(jīng)得知了表中的這條數(shù)據(jù)是否沖突,不知我的理解對(duì)不對(duì)。或者是通過(guò)其他的方式來(lái)實(shí)現(xiàn)的。通過(guò)select查詢判斷對(duì)于大量數(shù)據(jù)來(lái)說(shuō)不合適吧?
問(wèn)題解答
回答1:一般不是前端輸入完后ajax會(huì)去做查詢的么?提交的時(shí)候插庫(kù)前再查一遍,做個(gè)unique保險(xiǎn)一點(diǎn)。
回答2:根據(jù)用戶輸入的名字到數(shù)據(jù)庫(kù)查一下就ok了,有結(jié)果就提示已占用,沒(méi)有結(jié)果才能用,如果錄入其他信息期間被人先行提交占用再提示被占用就ok了,提示話術(shù)斟酌一下即可,這樣的概率很低并且也可以接受
回答3:到數(shù)據(jù)庫(kù)查吧
相關(guān)文章:
1. 關(guān)于docker下的nginx壓力測(cè)試2. docker - 各位電腦上有多少個(gè)容器啊?容器一多,自己都搞混了,咋辦呢?3. mac里的docker如何命令行開(kāi)啟呢?4. 關(guān)docker hub上有些鏡像的tag被標(biāo)記““This image has vulnerabilities””5. nignx - docker內(nèi)nginx 80端口被占用6. docker容器呢SSH為什么連不通呢?7. dockerfile - 我用docker build的時(shí)候出現(xiàn)下邊問(wèn)題 麻煩幫我看一下8. docker-compose 為何找不到配置文件?9. docker start -a dockername 老是卡住,什么情況?10. angular.js使用$resource服務(wù)把數(shù)據(jù)存入mongodb的問(wèn)題。

網(wǎng)公網(wǎng)安備