Я использую один довольно сложный подготовленный оператор с различными условиями в предложении WHERE, и в какой-то момент мне действительно нужен тот же оператор с еще одним конкретным условием. Создание двух разных операторов - это плохой подход, так как оба содержат большую часть своей строки запроса, и когда я обновляю один, мне придется обновить и другой. До сих пор я пытался использовать это:Повторное использование подготовленного оператора с необязательным условием
SELECT columns
FROM tables
WHERE manyConditions AND (specificColumn = ? OR ? = NULL)
В этом случае я мог бы связать один произвольный аргумент и NULL оказать определенное условие бесполезного для запросов, которые не нуждаются в ней ($pdo->execute([/* ... */, -1, null])
), пока еще в состоянии фильтровать specificColumn
при привязке правильного значения и чего-то, что не является NULL ($pdo->execute([/* ... */, 'specific value', true])
).
Это действительно грязный способ предотвратить дублирование кода, что заставляет меня связывать еще две переменные в большинстве случаев.
Есть ли более элегантный подход для предотвращения дублирования кода?
Пожалуйста, оставьте некоторую конструктивную обратную связь о том, почему вы downvoting этого вопроса - может быть, есть что-то улучшить его? –
не печальны о downvoting. У меня был такой же опыт, и у меня не было никакого ответа ... – JosMac
Downvoters наименьшее, что вы можете сделать, это комментировать –