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

发布于 2024-10-21 19:29:45 字数 111 浏览 2 评论 0 原文

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

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

谢谢, 亚历克斯

I have a requirement to gather a form input and store it into the database. That is pretty easy. The difficult part is that I can not make a unique key on a long text field.

In this kind of a situation, what is usually done to help prevent duplicate entries from being entered by users?

Thanks,
Alex

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

清醇 2024-10-28 19:29:45

更新

直接问题:

您应该创建一个附加字段,如本示例所示

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.");

进一步阅读:

UPDATED

Direct Question:

You should create an additional field as in this 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>

NOTE:

EXAMPLE:

$myUnique = crc32("The quick brown fox jumped over the lazy dog.");

Further SO Readings:

浪荡不羁 2024-10-28 19:29:45

创建要在 INSERTUPDATE 上触发的 LONGTEXT 条目的单独 MD5 哈希值。该哈希列应该有一个 UNIQUE 键并且应该是 CHAR 类型(因为它总是具有相同的大小)。这将允许唯一的密钥。

Create a separate MD5 hash of the LONGTEXT entry to be triggered on INSERT and UPDATE. That hash column should have a UNIQUE key and should be of CHAR type (since it will always be the same size). This will allow for the unique key.

偷得浮生 2024-10-28 19:29:45

在长文本字段上创建索引。然后在保存记录之前,搜索现有记录以查找用户刚刚输入的测试。如果找到,则不允许保存。

Create an index on your long text field. Then before saving a record, search the exisitng records for the test the user just entered. If found, don't allow the save.

離殇 2024-10-28 19:29:45
 $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!";   
 }
 $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!";   
 }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文