这是一个非常相关的2部分问题,因此我将其合并为一个:
第1部分
我有数组$country
和$redirect
,每个数组最多有3个不同的值(它们之间的总和为6)。
但是,我的表格中只有两列country
和redirect
。我想使用插入查询将$country[0], $country[1], etc
插入列country
,将$redirect[0], $redirect[1], etc
插入redirect
列。
这可能是一个愚蠢的问题,但这个INSERT查询是否有效,只是将值循环到列?
INSERT INTO table_name (country, redirect) values ('$country[0]', '$redirect[0]', '$country[1]', '$redirect[1]', '$country[2]', '$redirect[2]')
如果没有,我怎么能让这个工作?我可以使用for
循环,但我担心资源使用情况。
第2部分
如何覆盖/更新列country
的值已存在的行。
例如,Great Britain
已经存在于country
列中http://en-gb
位于同一行但位于redirect
列内。
我有一个INSERT查询,例如INSERT INTO table_name (country, redirect) VALUES ('Great Britain', 'http://uk')
,我想用Great Britain
覆盖/更新country
列redirect
已存在的行{{1}}值。
任何答案/评论都会非常,非常非常感激:)!!
答案 0 :(得分:4)
对于你的第一个问题,这样做是可行的:
INSERT INTO table_name (country, redirect)
VALUES ('$country[0]', '$redirect[0]'),
('$country[1]', '$redirect[1]'),
('$country[2]', '$redirect[2]')
关于第二个问题:country
上需要unique index,然后才能使用INSERT ON DUPLICATE KEY UPDATE
:
INSERT INTO table_name (country, redirect) VALUES ('Great Britain', 'http://uk')
ON DUPLICATE KEY UPDATE redirect='http://uk';
或者有多个值:
INSERT INTO table_name (country, redirect)
VALUES ('$country[0]', '$redirect[0]'),
('$country[1]', '$redirect[1]'),
('$country[2]', '$redirect[2]')
ON DUPLICATE KEY UPDATE redirect=VALUES(redirect)