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