【发布时间】: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.'%' ];
-
我试过这个方法,但它返回空数组