Вставка нескольких значений в одно имя столбца + перезапись / обновление существующих записей? - PullRequest
1 голос
/ 22 августа 2011

Это вопрос из двух частей, который довольно тесно связан, поэтому я и объединил его в один:

Часть 1

У меня есть массивы $country и $redirect, каждый из которых может содержать до 3 различных значений (сумма шести между ними). ​​

У меня в таблице только два столбца, 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 Ответ

4 голосов
/ 22 августа 2011

На ваш первый вопрос, сделайте так, и это будет работать:

INSERT INTO table_name (country, redirect) 
VALUES ('$country[0]', '$redirect[0]'), 
       ('$country[1]', '$redirect[1]'), 
       ('$country[2]', '$redirect[2]')

На ваш второй вопрос: вам нужен уникальный индекс на 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...