我需要收集表单输入并将其存储到数据库中。这很容易。困难的部分是我不能在长文本字段上创建一个唯一的密钥。
在这种情况下,通常采取哪些措施来防止用户输入重复的条目?
谢谢, 亚历
答案 0 :(得分:4)
<强>已更新强>
直接问题:
您应该在此eaxmple中创建一个附加字段
myId int(11) NOT NULL AUTO_INCREMENT,
myText TEXT,
myUnique VARCHAR(255) NOT NULL DEFAULT '0',
UNIQUE KEY myUnique (myUnique)
<form>
<textarea name="myText" ></textarea>
<input type="hidden" value="UNIQUE-ID" name="myUnique" />
</form>
注意:强>
示例:强>
$myUnique = crc32("The quick brown fox jumped over the lazy dog.");
进一步的SO读物:
答案 1 :(得分:3)
在MD5
和LONGTEXT
上触发INSERT
条目的单独UPDATE
哈希值。该哈希列应该有一个UNIQUE
密钥,并且应该是CHAR
类型(因为它总是大小相同)。这将允许唯一键。
答案 2 :(得分:1)
在长文本字段上创建索引。然后在保存记录之前,搜索exisitng记录以查看用户刚刚输入的测试。如果找到,请不要进行保存。
答案 3 :(得分:0)
$text='the long text to be inserted the long text to be inserted the long text to be inserted the long text to be inserted';
//assuming field name (mylongtextfield)
$result=mysql_query("SELECT id FROM mytable WHERE md5(mylongtextfield)='".md5($text)."'";
if(!$result){
//do your insert query
}else{
echo "the text already exist!";
}