我理解为什么我们不应该循环MySQL查询,我试图避免它。我有一个数组$names
,其中包含要插入someTable
的关键字列表,在MySQL字段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。除了带宽(不是关键,因为这是在localhost上)似乎没有保存任何东西。
答案 0 :(得分:4)
INSERT IGNORE INTO someTable (name) values ('firstName'), ('secondName'), ('thirdName')
如果有重复,则会忽略并继续。
答案 1 :(得分:3)
使用ignore。
例如:
insert ignore into someTable (name)...