避免MySQL中重复长文本条目的最佳方法

时间:2011-03-15 15:26:49

标签: mysql database webforms unique-key

我需要收集表单输入并将其存储到数据库中。这很容易。困难的部分是我不能在长文本字段上创建一个唯一的密钥。

在这种情况下,通常采取哪些措施来防止用户输入重复的条目?

谢谢, 亚历

4 个答案:

答案 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)

MD5LONGTEXT上触发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!";   
 }