Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Непонятная проблема с UPDATE в MySQL (Антон) 27/10/2003 - 11:06:35
      Re: Непонятная проблема с UPDATE в MySQL (prog) 27/10/2003 - 11:09:59
      Re: Непонятная проблема с UPDATE в MySQL (Антон) 27/10/2003 - 11:24:50
      Re: Непонятная проблема с UPDATE в MySQL (prog) 27/10/2003 - 11:32:47
      Re: Непонятная проблема с UPDATE в MySQL (Libarus) 27/10/2003 - 11:38:46
      Re: Непонятная проблема с UPDATE в MySQL (prog) 27/10/2003 - 11:59:41
      Re: Непонятная проблема с UPDATE в MySQL (prog) 27/10/2003 - 12:06:10
      Re: Непонятная проблема с UPDATE в MySQL (Libarus) 27/10/2003 - 12:09:02
      Re: Непонятная проблема с UPDATE в MySQL (prog) 27/10/2003 - 12:39:33
      Re: Непонятная проблема с UPDATE в MySQL (Libarus) 27/10/2003 - 12:45:32
      Re: Непонятная проблема с UPDATE в MySQL (prog) 27/10/2003 - 13:01:47
      Re: Непонятная проблема с UPDATE в MySQL (prog) 27/10/2003 - 13:03:18
      Re: Непонятная проблема с UPDATE в MySQL (Libarus) 27/10/2003 - 13:17:30
      Re: Непонятная проблема с UPDATE в MySQL (Anton) 20/12/2007 - 14:43:39

> Original message text:
> From: Антон - 27/10/2003 - 11:06:35
> Subject:Непонятная проблема с UPDATE в MySQL
> -----------------
> Непонятная проблема с UPDATE в MySQL
> Приветствую all!
> Проблема заключается в следующем.
> Есть таблица. Она имеет много столбцов, 2 из которых я использую.
> 1. ID - уникальный, авто_инкримент
> 2. POR - просто числовое поле.
> Надо в зависимости от ID поменять местами значения в столбциах POR у текущей строки следующей за ней.
> Скрипт:
>
> <?
> // приходит $id
> $que="SELECT * FROM `table` WHERE `id`=$id;"
> $res = mysql_query($que);
> //получили выборку, далее по строчно
> while ($row = mysql_fetch_array($res)){
> if ($row["id"]==$id){
> $por = $row["por"];
> $row = mysql_fetch_array($res);
> $idnext = $row["id"];
> $pornext = $row["por"];
> }
> }
>
> $que = "UPDATE `table` SET `por`=$por WHERE `id`=$idnext;";
> $res = mysql_query($que);
>
> $que = "UPDATE `table` SET `por`=$pornext WHERE `id`=$id;";
> $res = mysql_query($que);
>
> //далее вывожу всю таблицу с помощью SELECT * FROM `table`;
> //все нормально.
>
> ?>
>
> Но когда я захажу через PHPMyAdmin посмотреть значения, там поменены местами значения не соседних строк, а церез одну. В чем проблема я не могу решить. Может кто-нибудь подскажет, как проще можно поменять местами два значения в строках таблицы, или скажет где у меня может быть ошибка? Буду премного благодарен!!!
>


From: Libarus - 27/10/2003 - 12:09:02
Subject:Непонятная проблема с UPDATE в MySQL
-----------------
Пардон. Извини. Напищу так.
Есть две строки с уникальным id и числовым por. Надо поменять местами у этих двух строк значения столбцов por. Подскажи пожалуйста, как это сделать проще... А то у меня немного запутано.

Испраил ошибку.
Вот реальный код:

<?
// приходит $id
$que="SELECT * FROM `table` ORDER BY `por`;"

//делаем выборку всех значений
/*
тут мы получили некторую таблицу:

id | ... | por | ...
1 | ... | 1 | ...
2 | ... | 2 | ...
5 | ... | 3 | ...
9 | ... | 4 | ...

и прешедшее $id равно 2. Так вот текущая строка это та у которой id = 2, а следующая у которой id = 5.
*/

$res = mysql_query($que);
//получили выборку, далее по строчно
while ($row = mysql_fetch_array($res)){
if ($row["id"]==$id){
$por = $row["por"];
$row = mysql_fetch_array($res);
$idnext = $row["id"];
$pornext = $row["por"];
}
}

$que = "UPDATE `table` SET `por`=$por WHERE `id`=$idnext;";
$res = mysql_query($que);

$que = "UPDATE `table` SET `por`=$pornext WHERE `id`=$id;";
$res = mysql_query($que);

?>



[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
32607



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |