1

我正在构建字典,并希望限制用户可以获得的结果数量。在我的 HTML 页面中,我有一组单选按钮,用于定义用户可以限制搜索的范围。1 = 简单,2 = 简单,3 = 中等,4 = 困难,7 = 全部。这是由附加到条目的数据库值定义的,难度。我正在尝试使用以下代码限制搜索,但它没有返回任何结果。$search_limit 是单选值。

if(strcmp($search_limit, '1'))
        {
            $sql .= ') and (Difficulty is null or Difficulty = 1) and          rownum<=500' . $search_order;
        }
    elseif (strcmp($search_limit, '2')) 
    {
            $sql .= ') and (Difficulty  >= 1 or Difficulty <= 3) and     rownum<=500' . $search_order;
        }
        elseif (strcmp($search_limit, '3')) 
        {
            $sql .= ') and (Difficulty  >= 4 or Difficulty <= 6) and     rownum<=500' . $search_order;
        }
        else
        {
            $sql .= ') and (Difficulty <= 7) or rownum<=500' . $search_order;
        }

我遇到的问题是(难度> = x或难度<= x)。如果我将搜索限制默认为 else 语句,它将正确返回难度为 7(最大值)及以下的所有内容。同样,如果我将 else 语句中的 7 替换为 7 以下的任何其他数字,它也可以正常工作。我只是无法让定义的搜索工作。

4

2 回答 2

0

难度 >= 1 或难度 <= 3

总是如此(除非 Difficulty 为空):每个数字都大于 1 或小于 3。

你一定是说

Difficulty >= 1 AND Difficulty <= 3
于 2012-07-02T16:18:44.337 回答
0

搜索范围时,您应该使用x >= y AND x <= z... 否则,如果您使用OR,您将返回所有内容。

所以换...

Difficulty >= 1 or Difficulty <= 3

到...

Difficulty >= 1 and Difficulty <= 3

此外,您else有不同的逻辑,就像or rownum<=500所有其他人都有and rownum<=500

于 2012-07-02T16:21:31.533 回答