php - 将多个值插入同一列名称+覆盖/更新现有条目?

标签 php mysql arrays loops

这是一个非常相关的两部分问题,因此我将它合并为一个:

第 1 部分

我有数组 $country$redirect,每个数组最多有 3 个不同的值(它们之间有 6 个之和)。

然而,我的表中只有两列,countryredirect。我想使用插入查询,将 $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 indexcountry 然后可以使用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/

相关文章:

javascript - group by/distinct mysql vs javascript 过滤器性能

MYSQL批量改表引擎

javascript - Django:如何在没有你''的情况下将数组传输到javascript?

php - 如何检索表的列数据,将其存储到数组中,最后回显该数组

php - 在同一行插入更多值

php - MySQL的英文单词数据库?

php - 使用 SimpleXML 加载 XML 不返回某些元素的属性

php - 为什么我无法在 Android 设备上接收来自 GCM 的消息

c++ - for each counter loop in c++ doesn't increase with certain numbers

MySQL正则表达式验证字段值是域还是子域