2013-02-10 2 views
1

Это скорее вопрос теории. У меня есть страница с кучей различных текстовых полей, выпадающих списков и т. Д. У каждого пользователя есть своя «собственная страница», которая может быть обновлена ​​с помощью этой страницы обновления, о которой я говорю. Он обновляет поля по своему выбору. Он пропускает около 30 переменных (если каждое поле вводится) на страницу предварительного просмотра. Если человеку нравится страница предварительного просмотра, то они нажимают кнопку «Обновить» в нижней части страницы предварительного просмотра, и все различные переменные обновляются в соответствующей таблице MySQL, а их «собственная страница», которую другие смотрят, обновляется динамически. (дайте мне знать, если это объяснение не ясно).Динамический выбор обновлений MySQL

Внесение этой информации в первый раз легко. Однако, когда пользователь хочет обновить только несколько полей для своей страницы позже, я здесь смущен. Как заставить динамический запрос обновления MySQL распознавать обновление ТОЛЬКО полей на странице, которые пользователь хочет обновить (в то время как он оставляет остальные поля пустыми, оставляя старую информацию неповрежденной для этих столбцов, и они игнорируются в запрос обновления).

Дайте мне знать, если то, что я прошу, не имеет смысла, и я попробую еще раз.

Благодарим за помощь.

+1

... проверить, если поле будет пустым, и если да, то не обновлять? Где именно проблема кодирования? –

+0

Возможно, мой вопрос: кто-нибудь знает хороший сценарий, который циклически перебирает переменные, чтобы обнаружить, какие из них пусты, а какие нет? Если бы это было всего лишь несколько, это не было бы такой проблемой. Даже когда я это знаю, для запроса на обновление mysql требуется как имя столбца для обновления, так и связанная переменная. Динамическое обновление имени столбца вместе с вставкой правильных переменных для обновления (которые не оставлены пустыми) тоже меня смущает. –

+0

Вы снова выбираете страницу из базы данных, когда пользователь публикует их обновление и сравнивает, давая вам решения о том, что нужно обновлять. Или вы просто обновите лот. Что в этом вреда? – Popnoodles

ответ

0

Самый простой способ сделать это было бы

UPDATE MyTable m SET m.f1 = COALESCE(input1,m.f1), m.f2 = COALESCE(input2,m.f2), .... 
WHERE m.id = key; 

COALESCE возвратит первый ненулевое значение (или null, если все значения равны нулю).

Обратите внимание, что вы можете вставить значение по умолчанию после существующего значения поля, если вы хотите принудительно установить значение по умолчанию.
Как так:

UPDATE MyTable m SET m.f1 = COALESCE(input1,m.f1,default1), m.f2 = COALESCE(input2,m.f2,default2), .... 
WHERE m.id = key; 

См: MySQL: how to use COALESCE
http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#function_coalesce

Смежные вопросы