这是一个非常相关的两部分问题,因此我将它合并为一个:
第 1 部分
我有数组 $country
和 $redirect
,每个数组最多有 3 个不同的值(它们之间有 6 个之和)。
然而,我的表中只有两列,country
和 redirect
。我想使用插入查询,将 $country[0]、$country[1] 等
插入列 country
中,同样适用于 $ redirect[0]、$redirect[1] 等
列 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
在同一行中,但在列重定向
。
我有一个 INSERT 查询,例如 INSERT INTO table_name (country, redirect) VALUES ('Great Britain', 'http://uk')
,我想覆盖/更新Great Britain
所在的行已存在于具有新 redirect
值的 country
列中。
任何答案/评论都将非常、非常、非常感谢:)!!
最佳答案
对于你的第一个问题,这样做就可以了:
INSERT INTO table_name (country, redirect)
VALUES ('$country[0]', '$redirect[0]'),
('$country[1]', '$redirect[1]'),
('$country[2]', '$redirect[2]')
对于你的第二个问题:你需要一个 unique index在country
然后可以使用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)
关于php - 将多个值插入同一列名称+覆盖/更新现有条目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7146903/