将PHP数组中的唯一值插入SQL表

You*_*per 5 php sql insert

可能重复:
如何在MySQL中"插入,如果不存在"?

有SQL表:

CREATE TABLE IF NOT EXISTS `MyTable` (
  `id` smallint(6) NOT NULL AUTO_INCREMENT,
  `MyVar` varchar(40) DEFAULT NULL,
  PRIMARY KEY (`id`)
) 
Run Code Online (Sandbox Code Playgroud)

并且有两个PHP数组arr1[]=array("abc","bcd")arr2[]=array("abc","cde").

假设我已将arr1 []值保存到SQL表中.现在让我们假设我需要将arr2 []值保存到同一个SQL表中.我需要编写哪个SQL INSERT查询以避免重复保存"abc"条目?结果必须是:

MyTable:
1  |  abc
2  |  bcd
3  |  cde
Run Code Online (Sandbox Code Playgroud)

但不是:

MyTable:
1  |  abc
2  |  bcd
3  |  abc
4  |  cde
Run Code Online (Sandbox Code Playgroud)

更新:也许应该以这样的方式创建/定义MyTable,以便忽略重复的条目?

Kre*_*kin 6

有3级可能的解决方案:使用INSERT IGNORE,REPLACEINSERT ... ON DUPLICATE KEY UPDATE.看看这篇文章.

您也可以在内存中交叉array-s,然后在该解决方案适合您时插入唯一值.


hjp*_*r92 1

将表中的内容设为“ MyVaras” 。UNIQUE

像这样:

CREATE TABLE IF NOT EXISTS `MyTable` (
  `id` smallint(6) NOT NULL AUTO_INCREMENT,
  `MyVar` varchar(40) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE INDEX `myvaridx` (`MyVar`)
);
Run Code Online (Sandbox Code Playgroud)

或者,如果您无法重新创建表,请使用以下命令更改它

ALTER TABLE `request`
ADD UNIQUE INDEX `myvaridx` (`MyVar`)
Run Code Online (Sandbox Code Playgroud)