MySQL и PDO: как реализовать обновление нескольких столбцов с проверкой на непустые строки?

Всем добрый день.

Ситуация такая:
1) есть таблица с несколькими полями
2) есть набор данных для таблицы в виде ассоциативного массива 'название столбца'=>значение
3) нужно обновить определённую строку
4) при обновлении строки, если значение для какого-то столбца в массиве не задано или равно NULL - не обновлять этот столбец

В голову приходит вариант со считыванием исходной строки, а потом обновлением с использованием старых значений - но лишний запрос к БД делать не хочется. Может есть способ, при котором всё можно сделать в одном запросе?

Для работы с базой использую PHP и PDO.

Заранее спасибо.
  • Вопрос задан
  • 3107 просмотров
Решения вопроса 1
Remmi
@Remmi Автор вопроса
Спасибо всем помогавшим. После разбора и анализа предложенных решений решили переделать структуру входящих данных - подстраивать запрос выходит слишком накладно и костыльно.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@kaasius
Надо делать foreach() по массиву, и вписывать в set column=value только те column, в которых есть value
Ответ написан
Mu57Di3
@Mu57Di3
А может что-то типа такого если я конечно понял что требуется

UPDATE test.demo SET val = 3 WHERE (val IS NOT NULL)  AND (id in ('param1','param2' ... ))

id - имя парамтера
val - значение

Как раз запись обновится если значение ее не null
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы