zend表单将重复的条目插入“用户名”用户字段,即使我已经检查过了吗?

时间:2012-01-30 16:33:03

标签: mysql zend-framework pdo zend-form zend-db

我有一个奇怪的问题,我们的网站有使用zend表单编码的注册表单,我在zend db insert操作之前检查了数据库是否存在用户名,它总是工作正常,对我们成千上万的用户也很好,但是,即使在10秒或20秒的时间内,只有少数(约100个)记录自动存储(猜测)重复记录,除了自动增量列之外,不可能再次使用不同的值提交表单。

1 个答案:

答案 0 :(得分:3)

情况非常简单,称为“赛车”。

1. User1 submit form (email: x@x.com)
2. User2 submit form (email: x@x.com)
3. verify no x@x.com for User1
4. verify no x@x.com for User2
 - before nither of them added there is no x@x.com in DB 
5. Add to db User1
6. Add to db User2 
- you have got an duplication error.

解决方案:

1. unique index to filed email
2. transaction (started from verification email exist up to insert a new record)