我有一些代码利用参数化查询来防止注入,但我还需要能够动态构造查询,而不管表的结构如何。这样做的正确方法是什么?
这是一个示例,假设我有一个包含名称、地址、电话列的表。我有一个网页,我在其中运行Show Columns并使用它们作为选项填充选择下拉列表。
接下来,我有一个名为Search的文本框。此文本框用作参数。
目前我的代码看起来像这样:
result = pquery('SELECT * FROM contacts WHERE `' + escape(column) + '`=?', search);
不过,我从中得到一种恶心的感觉。我使用参数化查询的原因是避免使用escape。此外,转义可能不是为转义列名而设计的。
我怎样才能确保这按我的意图工作?
编辑: 我需要动态查询的原因是模式是用户可配置的,我不会去修复任何硬编码的东西。