Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: PHP Mysql UPDATE + переменная с инкриментом
mysql_query("UPDATE `tables` SET `pos` = ( @i := @i +1 ) WHERE {.....}");
более оптимален, чем цикл for средствами php + десятки-сотни-тысячи единичных запросов UPDATE + в Вашем варианте нужно знать сколько эта $i.
Интересует нечто
Когда нормальный человек, уезжая из дома одевает на жену пояс верности, веб-дизайнер ставит на нее счетчик...
temp11
Отправлено: 17 Мая, 2013 - 14:13:28
Новичок
Покинул форум
Сообщений всего: 5
Дата рег-ции: Май 2013
Помог: 0 раз(а)
imya пишет:
А не проще сделать поле автоинкрементом и не выдумывать?)
Конечно проще, но невозможно)
Мне не нужно `pos` = `pos`+$i и `pos` = `pos`+1
Вы предлагаете:
1) Узнать изначальное количество i.
2) Совершить отдельный запрос к к базе для его обновления
3) Результатом операции станет начальное (значение POS)+(i). А точнее ничего, т.к. запрос в конечном итоге обновит все строки с условие `FROM`=0 в в последнее значение $i.
Может Вы невнимательно прочли мои сообщения оба раза.. мне нужно определить POS от 1 до X, по выборке FROM. (Это ясно из моего первого сообщения)
mysql_query("SET @i :=0; UPDATE `tables` SET `pos` = ( @i := @i +1 ) WHERE `from` = 0 ORDER BY `pos`;")
Выполнить невозможно, а значит переменная должна быть определена (-- объявлено ее значение) либо в самом запросе UPDATE, либо предварительным (еще одним), отдельным запросом.
Вот и суть дилеммы: Как определить объявить и установить значение переменной в запросе UPDATE.
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
temp11 пишет:
mysql
Это deprecated, используйте mysqli* и его http://ru2.php.net/mysqli_multi_query , тут какраз разделитель между "запросами" точка с запятой, а транзакция одна до сервера. (Добавление)
И чо я раньше в эту тему не зашол..
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.