Как обновить несколько строк в одной таблице MySQL с помощью PHP? - PullRequest
0 голосов
/ 14 сентября 2009

Если нужно обновить только одну строку с отдельным полем, я могу использовать:

insert into tab(..) value(..) on duplicate key update ...

Но теперь это не так, мне нужно обновить 4 строки внутри одной таблицы, у которой ее поле "accountId" равно $ _SESSION ['accountId'].

В данный момент я могу выбросить из головы:

delete from tab where accountId = $_SESSION['accountId'],

затем вставьте новые строки.

Что, очевидно, не лучшее решение.

У кого-нибудь есть идеи по этому поводу?

Ответы [ 4 ]

0 голосов
/ 14 сентября 2009

Вы можете использовать оператор replace . Это будет работать как УДАЛЕНИЕ, за которым следует INSERT

0 голосов
/ 14 сентября 2009

Судя по вашему вопросу, вам следует ознакомиться с Заявлением об обновлении .

Вставка используется для добавления новых строк, а не для их обновления. Удалить используется для удаления. И Обновление используется для изменения существующих строк. Использование «Вставить при обновлении дубликата ключа» - это хакерский способ изменения строк, и он плохо подходит для использования, когда вы знаете строка уже существует.

0 голосов
/ 14 сентября 2009
  1. загрузить все значения во временную таблицу.
  2. ОБНОВИТЬ все значения с помощью JOIN.
  3. ВСТАВИТЬ все значения из временной таблицы, которых нет в целевой таблице.
0 голосов
/ 14 сентября 2009

Используйте update просто так!

update tab set col1 = 'value' where accountId = $_SESSION['accountId']

Более того, MySQL позволяет вам делать update с объединением, если это немного облегчает вашу жизнь:

update
    tab t
    inner join accounts a on
        t.accountid = a.accountid
set
    t.col1 = 'value'
where
    a.accountname = 'Tom'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...