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


Mysql insert, if duplicate value on unique key, insert a different value

是否有可能,当插入具有唯一字段的行时,在重复的情况下将进入唯一字段的值更改为不同的值?

情形:用户正在添加一个新条目,该条目的名称不能重复。由于某种原因,用户键入了数据库中已经存在的名称。

如果使用"ON DUPLICATE KEY UPDATE"-前一个记录(与插入的名称相同)在其他字段中获得所有新数据(更新发生)-不好。

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

这将显示重复的存在,用户只需更改名称(很可能是错误地插入了重复的名称)。

你必须这样做(使用mysqli准备语句)-

 SELECT name FROM table WHERE name=?

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

如果存在一行或多行,则重命名条目名称。

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

然后插入数据库

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