PHP MYSQL - 过滤和排序功能

标签 php mysql

我正在为一个网站开发过滤和排序选项,但似乎卡住了。整个代码可以在这里看到:http://pastebin.com/pYfnLiSZ

它不是 100% 完整的......像这样的部分

        if(array_key_exists('number', $sorts))
        {
            $issue = $sorts['number'];

            $setIssue = "AND i.item_number = ?";
        }

仍然需要编辑一下,但我希望它是可以理解的。

我想不通的部分是这个(pastebin 中的第 126 行):

if( !empty($userIDS) && $letter )
        {
            $ref = array();

            foreach($userIDS as $id)
            {
                $ref[] = $id['followed'];
            }

            $ref[] = $letter;

            $params = implode(",", array_fill(0, count($userIDS), "?"))."?";
            $prep = implode("", array_fill(0, count($userIDS), "i"))."s";

        }

我不确定如何使上面的 if 动态化。仅当 $userIDS 数组不为空且 $letter$year$publisher$number 已设置。所以基本上可以是任意组合。属于 $userIDS 数组中的用户的项目,并按字母、年份、出版商、数字以及将来可能的其他过滤器进行过滤。或者它可以是年份和出版商,或出版商、编号和年份……等等。

最佳答案

由于您正在尝试“约束或条件的组合”,我可以建议您使用我在商店中使用的以下模式:

  1. 定义一个类
  2. 制定规则
  3. 查询
  4. 优化缓存或其他东西

     class condition {
    
     public function add($query) {
         $this->query[] = $query;
         return $this;
     }
    
     public function get() {
         return " SELECT * FROM TABLE WHERE " . implode(" and " ,$this->query);
    
     }
    
    
     $con = new condition();
      $query =   $con->add("price > 100 and price < 200")->add("year > 1980")->get();
    

关于PHP MYSQL - 过滤和排序功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30604160/

相关文章:

javascript - 当另一个用户更新 mysql 中的表时,我可以在不使用 setInterval() 函数的情况下触发 javascript 函数吗

php - 另一个查询中的 Smarty 查询计数

php - PHP 中的检查不起作用

php - 根据用户输入的关键字重定向

javascript - Recaptcha 导致部分页面加载

PHP代码获取以下格式的json输出

php - isset() 和 !empty() 的 Twig 等价物是什么?

javascript - 使用ajax调用PHP脚本

php - 无法使用 Azure PHP sdk 为 Assets 创建 createFileInfos

php - Laravel 4:迁移 - Schema::table - 文本列自动创建主唯一索引