[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: mysql update
h234
Есть объект — строка таблицы из БД.

Есть функция, обновления строки таблицы в БД. На входе объект , на выходе результат запроса к БД.

Как рационально реализовать эту функцию?
Сразу обновить все поля объекта или же сначала сделать запрос к БД , и сравнить старый объект и изменяемый?

Скажем выполнить только один запрос:
UPDATE `user` SET `login`='newlogin', `password`='newpassword' WHERE `id` = 1;


Или же два
SELECT * FROM `user` WHERE `id` = 1

Сравнить логин и пассворд с новыми значениями и потом еще выполнить
 UPDATE `user` SET `login`='newlogin', `password`='newpassword' WHERE `id` = 1;




Спустя 4 минуты, 27 секунд (11.10.2011 - 13:49) redreem написал(а):
в чем смысл дополнительного сравнения? если юзер в кабинете меняет свой пароль, то он уже прошел авторизацию и система его однозначно идентифицировала.

Спустя 4 минуты, 14 секунд (11.10.2011 - 13:54) h234 написал(а):
Это просто пример. На деле может быть любой объект с любым количеством полей. Так если у объекта 10 полей,а изменилось только одно, рационально ли делать UPDATE для всех полей или все же лдучше сравнить со старыми значениями?

Спустя 4 минуты, 6 секунд (11.10.2011 - 13:58) yurij__ написал(а):
дополнительный запрос точно не рационально делать. Выбирая из этих двух вариантов, лучше обновить все поля.

Спустя 32 минуты, 33 секунды (11.10.2011 - 14:30) redreem написал(а):
я отдельной переменной формирую набор полей, которые требуются для обновления и все.

"UPDATE `user` SET ".$updatedata." WHERE `id` = 1";


$updatedata формируется в зависимости от ситуации.

Спустя 29 минут (11.10.2011 - 14:59) h234 написал(а):
Цитата (redreem @ 11.10.2011 - 11:30)
я отдельной переменной формирую набор полей, которые требуются для обновления и все.

спасибо, что то не подумал сразу
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.