Задать вопрос

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

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

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

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

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

Заранее спасибо.
  • Вопрос задан
  • 3131 просмотр
Подписаться 3 Оценить 4 комментария
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 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
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
IT ATLAS Москва
от 250 000 до 500 000 ₽