【问题标题】:How make search in mysql php oop?如何在 mysql php oop 中进行搜索?
【发布时间】:2018-10-06 19:05:20
【问题描述】:

我有带有 id、p_name(FULL TEXT)、国家、公司、价格的产品的 mysql 数据库。我需要在网站上进行动态搜索。现在我在查询结果时遇到了这样的问题,我必须在数据库中输入完全匹配的名称。我试图把 %:query% 但是当我执行结果是空的

型号:

public function getSearchResult($query){
        $params = [
            'query' => $query,
        ];
        // Prepare statement
        $search = $this->db->row("SELECT id, p_name FROM product WHERE p_name LIKE :query", $params);

        return $search;

        }

控制器:

public function indexAction(){

        $result = $this->model->getSearchResult($_POST['search']);

        $vars = [
            'result' => $result,
        ];
        $this->view->render('Search', $this->vars + $vars);
    }

数据库类:

public function query($sql, $params = []){
        $stmt = $this->db->prepare($sql);
        if(!empty($params)){
            foreach ($params as $key => $val) {
                if (is_int($val)) {
                    $type = PDO::PARAM_INT;
                } else {
                    $type = PDO::PARAM_STR;
                }
                $stmt->bindValue(':'.$key, $val, $type);
            }
        }
        $stmt->execute();
        return $stmt;
    }

    public function row($sql, $params = []){
        $result = $this->query($sql, $params);
        return $result->fetchAll(PDO::FETCH_ASSOC);
    }

【问题讨论】:

  • $search = $this->db->row("SELECT id, p_name FROM product WHERE p_name LIKE '%:query%'", $params);
  • 试试 $params = [ ':query' => '%'.'$query.'%' ];
  • 我试过这个方法,但它返回空数组

标签: php mysql mysqli


【解决方案1】:

您可以在数组值中添加%。更改您的模型代码,如下所示:

public function getSearchResult($query){
        $params = [
            ':query' => '%'.$query.'%', // change this line
        ];
        // Prepare statement
        $search = $this->db->row("SELECT id, p_name FROM product WHERE p_name LIKE :query", $params);

        return $search;

        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-16
    • 1970-01-01
    • 2017-07-10
    • 1970-01-01
    • 1970-01-01
    • 2011-03-21
    • 2012-10-23
    • 1970-01-01
    相关资源
    最近更新 更多