2013-03-07 49 views
0

我的应用程序中有一个搜索表单,数据正在提交给后端,后端返回一个包含结果的表。该查询被动态构造是这样的:最佳实践:使用AJAX发送的数据生成查询

  1. 在$ _POST [“数据”]所有字段被过滤针对查询的某些类别 字段的允许列表。

  2. 空的域被丢弃。

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

我该怎么做才能最好地处理这种情况?我不希望用户操纵我的查询,但还是要生成它们只是像我今天做的事:

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

... 

回答

0

简单的完全限定每个字段的名称与包含它的表的名称。假如你有两个表“category”&“item”,它们都有一个名为“name”的字段,它包含了它们各自对象的名称,那么你将如何决定你想引用哪一个。

0

如果您要加入表A和表B,那么在引用A的id列时,请确保指定了A.id,这种方式id不再是“不明确的字段”。