关于在我的简单网页表单中防止重复输入的问题。
我的表格记录用户从web表单输入的内容,并按日期区分,例如DATE()。如何防止同名用户在同一日期内输入两次,例如同一用户名不能在同一日期内输入两次,但可以在其他日期输入?
发布于 2010-07-13 17:59:21
您的表应该包含以下内容:
create table tablename (
...
user_id bigint, -- or whatever
date_created date,
unique key(user_id, date_created)
...
);发布于 2010-07-13 18:00:33
您可以简单地创建一个复合主键。对于您的情况,这意味着您的主键必须由日期字段和用户名字段组成。
发布于 2010-07-13 18:02:36
在几个方面。
首先,您可以在表上创建索引。(我使用简单的表作为示例)。
CREATE TABLE `test` (
`id` INT NOT NULL ,
`name` VARCHAR( 255 ) NOT NULL ,
`date` DATE NOT NULL ,
PRIMARY KEY ( `id` )
) ENGINE = MYISAM;
ALTER TABLE `test` ADD UNIQUE (
`name` ,
`date`
);这是MySQL的方式。
您还应该在PHP中进行检查,尽管您可以在插入时进行检查(MySQL将返回错误,您可以进行检查)。但您可以在插入之前进行额外的选择(SELECT * from test WHERE name=USER AND date=DATE)并检查记录数。如果大于0,则显示错误。
在保存时,您很少担心额外的一个SQL。如果需要,只需检查MySQL语句是否有错误(MySQL way :))。
https://stackoverflow.com/questions/3236012
复制相似问题