[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: просто апдейт
vital
Суть.
Есть табличка, с некими полями.
Есть массив вида ид=>значение
нужно сделать апдейт, что бы у строк у которых ид=ид(см.выше), изменилось значение колонки itemOrder на значение(см.выше)

Одним запросом. Можно, не?



Спустя 12 минут, 15 секунд (13.12.2010 - 19:55) ИНСИ написал(а):
vital если правильно тебя понял, то как-то так:
foreach($array as $key => $data) {
mysql_query("
UPDATE `table`
SET `itemOrder` = '
{$data}'
WHERE `id` =
{$key}
");
}

Спустя 5 минут, 36 секунд (13.12.2010 - 20:00) twin написал(а):
Ужос... Немедленно читать про VALUES

Спустя 5 минут, 38 секунд (13.12.2010 - 20:06) ИНСИ написал(а):
Цитата
Ужос... Немедленно читать про VALUES

ты мне? Если да, то не совсем тебя понял.

Спустя 41 минута, 25 секунд (13.12.2010 - 20:47) twin написал(а):
Упс, прошу скузми. UPDATE же там. Попутал.
Одним запросом так не сделать, конеш.

Спустя 25 минут, 54 секунды (13.12.2010 - 21:13) vital написал(а):
Цитата
то как-то так:

вот как-то так я и не хотел)

Спустя 1 минута, 8 секунд (13.12.2010 - 21:15) vital написал(а):
бтв, сдеалал вот так

UPDATE `trainingType`
SET
`itemOrder` = ELT(FIELD(id, ' . implode(',', array_flip($arr)) . '), ' . implode(',', $arr) . ')
WHERE
id IN (' . implode(',', array_flip($arr)) . ')';


вроде работает.

Спустя 1 минута, 30 секунд (13.12.2010 - 21:16) vital написал(а):
выдрано из исходника, простите если что.

Спустя 20 часов, 51 минута, 25 секунд (14.12.2010 - 18:07) SlavaFr написал(а):
@vital ты таким запросом сэкономиш 0.05 секунд и одновременно зделаеш код более сложным в восприятии.
к примеру array_flip сожрет все клучи у которых одинаковоe значение и таким образом зделает из масива array(1=>2,2=>2) масив array(2=>2).
T.e в твоем случае нужное UPDATE с ID=1 вообще не будет произведенно.
Не надо усложнять код, так как ты его сам потом не разбереш.

Используй лучше Prepared Statements и база выполнит твой запрос довольно быстро http://php.net/manual/en/pdo.prepared-statements.php

Спустя 2 часа, 40 минут, 15 секунд (14.12.2010 - 20:48) sergeiss написал(а):
Вообще, в любом SQL можно это сделать одним запросом... Только надо чуть-чуть подумать и чуть-чуть "покнопать" smile.gif Посредством триггеров всё решается достаточно быстро. Естественно, имеет смысл заморачиваться, если постоянно делаются такие апдейты, а не разово.

А в MySQL, так вообще этот механимз "стандартный"... Почему никто не предложил использовать ON DUPLICATE KEY UPDATE? В Постргре такого нету, там надо самому делать через триггер (что несложно, вобщем-то). А в MySQL используйте стандартные средства!


_____________
"Нужно быть готовым прислушиваться к тем, кто может тебя чему-нибудь научить. Иначе ты никогда не вырастешь."

Откровенно я никому ниразу не нагрубил. А дать подзатыльник зарвавшемуся юнцу, так это и ему на пользу, и мне в удовольствие. © AllesKlar
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.