我的应用程序中有一个搜索表单,其中数据被提交到后端,后端返回一个包含结果的表。查询是动态构造的,如下所示:
$ _POST ['data']中的所有字段都会根据允许的列表进行过滤 该特定类别查询的字段。
空的字段将被丢弃。
顺便提一下,这也是在保存数据时完成的。现在,对于包含一个单词的字段,这完全没问题。但是我在一些查询中有一些复杂的JOIN,并且PDO有时会抱怨模糊字段(例如'id')。
我应该怎样做才能最好地处理这种情况?我不希望用户操纵我的查询,但仍然希望像我今天一样生成它们:
case 'id':
case 'company':
$where .= ' AND `' . $field . '` = :' . $field;
...
答案 0 :(得分:0)
只需使用包含它的表的名称完全限定每个字段名称。你必须这样做,假设你有两个表“类别”& “item”,都有一个名为“name”的字段,其中包含各自对象的名称,您还将决定要引用哪一个。
答案 1 :(得分:0)
如果要连接表A和表B,在引用A的id列时,请确保指定A.id,这样id不再是“不明确的字段”。