0

我的应用程序中有一个搜索表单,其中数据被提交到后端,该后端返回一个包含结果的表。查询是这样动态构造的:

  1. $_POST['data'] 中的所有字段都根据该特定查询类别的允许字段列表进行过滤。

  2. 空的字段被丢弃。

顺便说一句,在保存数据时也会这样做。现在,对于由一个单词组成的字段,这完全可以。但是我在某些查询中有一些复杂的 JOIN,并且 PDO 有时会抱怨不明确的字段(例如“id”)。

我应该怎么做才能最好地处理这种情况?我不希望用户操纵我的查询,但仍然想像今天一样简单地生成它们:

case 'id':
case 'company':
   $where .= ' AND `' . $field . '` = :' . $field;

...
4

2 回答 2

0

只需使用包含它的表的名称来完全限定每个字段名称。否则,您必须这样做,假设您有 2 个表“类别”和“项目”,两个表都有一个名为“名称”的字段,其中包含各自对象的名称,否则您将如何决定要引用哪一个。

于 2013-03-07T21:00:24.487 回答
0

如果要连接表 A 和表 B,在引用 A 的 id 列时,请确保指定 A.id,这样 id 不再是“模糊字段”。

于 2013-03-07T23:02:10.310 回答