繁体   English   中英

PHP唯一文本字段?

[英]PHP Unique Text Field?

我有一张桌子,我又有一个带有URL的文本字段,我不希望任何具有重复URL的行,但我不想在插入之前进行检查,没有办法使文本字段唯一或您可以建议使用其他字段类型吗?

解决方案基本上是在数据库上添加一个额外的字段,例如field_hash,使它的VARCHAR和Index唯一。

CREATE TABLE 'info' (
'text' text NOT NULL,
'text_hash' varchar(40) NOT NULL,
PRIMARY KEY ('id'),
UNIQUE KEY 'text_hash' ('text_hash')
);

$text = 'Full Text';
$text_hash = sha1($text);

mysql_query("INSERT INTO info (text, text_hash) VALUES ('$text', '$text_hash')");

如果将数据库中的文本字段设置为唯一键或主键,或者设置了它,则在尝试输入重复项时插入语句将失败。 这样,您所需要做的就是正确处理失败的插入,然后就可以了。

正如在其他地方指出的那样,您不能使实际的TEXT字段唯一,但是如果您使用的是varchar字段,那么它是可行的。 这可能根本不重要(可能只是沟通不畅),因为如果将URL存储在TEXT字段中,那么您还需要担心其他问题。

您可以尝试使用另一个包含URL字段哈希的字段。

正确的方法是检查表中是否存在url,如果是,则插入,否则,不插入。

作为最佳实践,应在实际需要的地方使用异常处理,而不应将其用作常规功能的替代品。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM