Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: update без цикла нескольких полей таблицы
 
 автор: Slo_Nik   (05.05.2012 в 19:32)   письмо автору
 
 

Добрый вечер.
Есть массив в виде
Array
(
[act] => ed-sorting
[data] => Array
(
[0] => 26
[1] => 24
[2] => 25
)

)
Нужно составить запрос к базе на обновление одного столбца при условии, что данные и id всегда разные.
можно сделать через цикл foreach() например
<?php
$data = isset($_POST['data']) ? $_POST['data'] : null;
foreach($data as $key => $val){
$query = "UPDATE `table` SET `order` = ".$key." WHERE `id` = ".$val."";
if( mysql_query($query)){
/* дальнейшие действия */
}
else{
echo "Jib,rf";
}
}
?>
А как сделать тоже самое, но без цикла? чтобы одним махом обновить все записи?
Если бы для `order` были одинаковые значения, то можно объединить id через IN(), но данные будут всегда разные.

  Ответить  
 
 автор: Sfinks   (09.05.2012 в 14:26)   письмо автору
 
   для: Slo_Nik   (05.05.2012 в 19:32)
 

Можно так:
<?php

  $data 
= array( 26 24 25 );

  
$query 'UPDATE `table` SET `order` =CASE ';
  foreach( 
$data as $key => $val )
    
$query .= "WHEN `id` =$val THEN $key ";
  
$query .= 'END WHERE `id` IN (' implode',' $data ) . ')';

  echo 
$query;
результат:
UPDATE `table`
   SET `order` =CASE WHEN `id` =26 THEN 0
                     WHEN `id` =24 THEN 1
                     WHEN `id` =25 THEN 2 END
 WHERE `id` IN (26,24,25)

P.S. Не пренебрегайте, плиз, тегами [ code ][ /code ]. Код не возможно читать.

  Ответить  
 
 автор: Slo_Nik   (11.05.2012 в 12:32)   письмо автору
 
   для: Sfinks   (09.05.2012 в 14:26)
 

Благодарю за подсказку.
Тегами не пренебрегаю, в этот раз просто забыл по запарке.)))
Попробую разобрать Ваш пример.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования