0

好的,所以我的主要问题是关于 WHERE 和 ORDER BY、LIMIT 等之间的任何内容。

我目前的设置如下:

SELECT " . $column_string . " FROM " . $table_name . " " . $query_join . " " . $where . " " . $query_end . " " . $query_limit

我的问题是这样的,我设置了用转义字符串检查每个变量,但是当你来到 $query_end 时,它将持有 test = '1' AND test2 = '2' 等。我有那个部分设置允许你发送一口气完成整个字符串。但当然,如果你检查它是否变成了 test = \'1\' AND test2 = \'2\'。

我唯一能想到的就是把它分成一些奇怪的数组,比如 [test2 = ],[2] 但这对 (test1 = '2' OR test2 = '3') 不起作用,尽管我可以让它工作我真的不想那样做。

任何人都可以为上述问题提出更好的解决方案吗?还有另一个项目用于检查 mysql-real-escape-string 之外的注入吗?

此设置的全部原因是允许我使用 json 通过 ajax 发送多个查询,然后将所有数据发送回 3 级数组。

4

1 回答 1

1

“奇怪”的数组实际上并没有错。

每个自定义搜索解决方案都基于类似的方法 - 动态组装 WHERE 子句的一系列条件。
不过我不知道,为什么需要用户设置的字段集或表。但这个想法是完全一样的。只是不要忘记根据硬编码的白名单验证所有标识符和运算符。

于 2013-07-27T15:03:12.523 回答