MySQL и PDO: как реализовать обновление нескольких столбцов с проверкой на непустые строки?
Всем добрый день.
Ситуация такая:
1) есть таблица с несколькими полями
2) есть набор данных для таблицы в виде ассоциативного массива 'название столбца'=>значение
3) нужно обновить определённую строку
4) при обновлении строки, если значение для какого-то столбца в массиве не задано или равно NULL - не обновлять этот столбец
В голову приходит вариант со считыванием исходной строки, а потом обновлением с использованием старых значений - но лишний запрос к БД делать не хочется. Может есть способ, при котором всё можно сделать в одном запросе?
Картина в целом: PHP-скрипт работает в качестве демона для сбора данных. В нём один раз готовится запрос при запуске, и дальше в бесконечном цикле данные вставляются по этому шаблону
Спасибо всем помогавшим. После разбора и анализа предложенных решений решили переделать структуру входящих данных - подстраивать запрос выходит слишком накладно и костыльно.
@Sander_Li про генерацию запроса до подготовки как-то не подумал. Похоже, что только так и можно - а с уже сгенерированным запросом такая штука не прокатит.
У меня ситуация как раз такая: запрос один раз готовится и много раз выполняется по шаблону. Раньше приходили значения для всех столбцов и это работало - а теперь базу переделали, и какие-то значения теперь будут пустыми.
@Sander_Li теперь спрашиваю себя, нужно ли вообще готовить в таком случае эти запросы.) Может быть, легче вместо 5-6 шаблонов для подготовленных формировать запрос на лету