最佳实践:使用AJAX发送的数据生成查询

时间:2013-03-07 20:43:55

标签: php mysql pdo

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

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

  2. 空的字段将被丢弃。

  3. 顺便提一下,这也是在保存数据时完成的。现在,对于包含一个单词的字段,这完全没问题。但是我在一些查询中有一些复杂的JOIN,并且PDO有时会抱怨模糊字段(例如'id')。

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

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

2 个答案:

答案 0 :(得分:0)

只需使用包含它的表的名称完全限定每个字段名称。你必须这样做,假设你有两个表“类别”& “item”,都有一个名为“name”的字段,其中包含各自对象的名称,您还将决定要引用哪一个。

答案 1 :(得分:0)

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