1

我理解为什么我们不应该循环 MySQL 查询并且我试图避免它。我有一个数组$names,其中包含要插入的关键字列表,对 MySQL 字段someTable有一个约束:UNIQUEname

mysql> select * from someTable where name='stress';
+-----+--------+
| id  | name   |
+-----+--------+
| 143 | stress |
+-----+--------+
1 row in set (0.00 sec)

mysql> insert into someTable (name) values ('stress');
ERROR 1062 (23000): Duplicate entry 'stress' for key 'name'
mysql>

我希望使用以下类型的查询来避免循环:

$result = mysql_query("insert into someTable (name) values ('firstName'), ('secondName'), ('thirdName')");

但是,如果任何名称已经存在,则不会插入任何值。此外, 的值$result将是FALSE如何构造一个查询来插入值,如果它们中的任何一个存在则不会失败,如果插入其中任何一个将返回TRUE

我知道我可以为此编写一个存储过程,但这只会将循环从 PHP 移动到 MySQL。除了带宽(这在本地主机上并不重要)之外,似乎没有任何保存。

4

2 回答 2

4
INSERT IGNORE INTO someTable (name) values ('firstName'), ('secondName'), ('thirdName')

如果有重复,它将忽略并继续。

于 2012-10-24T18:05:33.303 回答
3

使用忽略。

例子: insert ignore into someTable (name)...

于 2012-10-24T18:05:34.787 回答