У меня есть код, который использует параметризованные запросы для предотвращения внедрения, но мне также нужно иметь возможность динамически строить запрос независимо от структуры таблицы. Каков правильный способ сделать это?
Вот пример, скажем, у меня есть таблица со столбцами Имя, Адрес, Телефон. У меня есть веб-страница, на которой я запускаю Показать столбцы и заполняю их раскрывающимся списком в качестве параметров.
Далее у меня есть текстовое поле под названием Search. Это текстовое поле используется в качестве параметра.
В настоящее время мой код выглядит примерно так:
result = pquery('SELECT * FROM contacts WHERE `' + escape(column) + '`=?', search);
Я получаю неприглядное чувство от этого все же. Причина, по которой я использую параметризованные запросы, заключается в том, чтобы избежать использования escape. Кроме того, экранирование, скорее всего, не предназначено для экранирования имен столбцов.
Как я могу убедиться, что это работает так, как я задумал?
Редактировать: Причина, по которой мне требуются динамические запросы, заключается в том, что схема настраивается пользователем, и мне не нужно будет исправлять что-либо жестко запрограммированное.