powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Работа с БД - изменение значения...
4 сообщений из 4, страница 1 из 1
Работа с БД - изменение значения...
    #33659541
Фотография yahaha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задача: найти в БД запись с "ID"=555 и увеличить значение поля "VALUE" (int) на +5.

Т.е. что-то типа этого (без учёта проверок и т.п.)

Код: plaintext
1.
2.
3.
4.
5.
6.
$s="SELECT * FROM test WHERE id=555;";
 $ask=$dbh->prepare($s); $ask->execute;
 $ref = $ask->fetchrow_arrayref;
 $value=$$ref[ 1 ]+ 5 ;
 $s="UPDATE test SET value=$value WHERE id=555;";
 $ask=$dbh->prepare($s); $ask->execute;
 

Но! Есть одна проблема... Что, если "в перерыве" между этими двумя командами, кто-то на сервере изменит значение value этой записи?

Например:
- сначала там было "4"
- программа прибавила ещё "5" - получила "9" (т.е. 4+5)
- в это время кто-то на сервере увеличил значение до "7".
- моя программа отправила на сервер значение "9".

В результате на сервере теперь "10", а должно быть "12" (т.е. 7+5)...
...
Рейтинг: 0 / 0
Работа с БД - изменение значения...
    #33659545
DocAl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А это вам надо читать про блокировки и транзакции.
...
Рейтинг: 0 / 0
Работа с БД - изменение значения...
    #33659561
Фотография 4m@t!c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А сразу UPDATE`ить нужную запись нельзя?
----------------------------------------
Артисты не приехали, приехали цыгане
...
Рейтинг: 0 / 0
Работа с БД - изменение значения...
    #33659567
DocAl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, я невнимательно прочитал... Мне показалось, между селектом и апдейтом есть какие-то действия пользователя. Если нужно просто увеличить значение value на 5 у записи с id=555 -- то надо это и делать:
Код: plaintext
UPDATE test SET value=value+ 5  WHERE id= 555 
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Работа с БД - изменение значения...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]