|
|
|
| Добрый вечер.
Есть массив в виде
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(), но данные будут всегда разные. | |
|
|
|
|
|
|
|
для: 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 ]. Код не возможно читать. | |
|
|
|
|
|
|
|
для: Sfinks
(09.05.2012 в 14:26)
| | Благодарю за подсказку.
Тегами не пренебрегаю, в этот раз просто забыл по запарке.)))
Попробую разобрать Ваш пример. | |
|
|
|