我理解为什么我们不应该循环 MySQL 查询并且我试图避免它。我有一个数组$names
,其中包含要插入的关键字列表,对 MySQL 字段someTable
有一个约束:UNIQUE
name
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。除了带宽(这在本地主机上并不重要)之外,似乎没有任何保存。