Mysql插入,如果唯一键上有重复值,则插入不同的值

时间:2016-08-16 16:48:02

标签: php mysql insert unique-key

在插入具有唯一字段的行时,是否有可能将复制到唯一字段的值更改为不同的字段?

情况:用户正在添加新文章,该名称不能重复。出于某种原因,用户键入数据库中已存在的名称。

如果使用“ON DUPLICATE KEY UPDATE” - 上一条记录(与插入名称相同)获取其他字段中的所有新数据(更新发生) - 不好。

在插入时,如果字段是唯一的,并且DB中存在匹配项,则需要将插入的值更改为“[DUPLICATE] name”。

这将显示重复的存在,用户只会更改名称(可能是因为错误而重复插入)。

1 个答案:

答案 0 :(得分:1)

你必须做一些事情(使用mysqli使用预处理语句) -

 SELECT name FROM table WHERE name=?

绑定变量(我假设$articleName)并存储结果,然后检查是否与mysqli_num_rows()匹配。

如果存在一行或多行,请重命名文章名称。

 $articleName=$articleName."[DUPLICATE]";

然后插入数据库。

注意:通常没有相同的文章名称,因为句子可以通过多种方式构建。考虑构建一个非常智能的程序来检测它,或像在SO中那样手动检查。