Vue가 Mysql 데이터베이스 데이터의 퍼지 쿼리를 구현하는 방법

WBOY
풀어 주다: 2023-06-02 11:31:37
앞으로
1267명이 탐색했습니다.

1. 요구 사항

입력 상자에 데이터를 입력하고 입력 결과를 기반으로 데이터베이스의 해당 내용을 퍼지 검색하여 퍼지 쿼리를 수행합니다.

2. v-model 양방향 바인딩을 사용하여 keyWord 데이터를 쿼리하는

입력 상자를 구현합니다. v-model双向绑定查询数据keyWord

<el-input v-model="keyWord" placeholder="请输入关键字搜索" clearable></el-input>
        <el-button type="success" icon="el-icon-search" @click="search"></el-button>
로그인 후 복사

由于输入框和显示结果的不再同一view下,所以在路由跳转时将搜索结果传递给显示结果的页面,这里用的query

search函数:

Vue가 Mysql 데이터베이스 데이터의 퍼지 쿼리를 구현하는 방법

SearchResult.vue代码

Vue가 Mysql 데이터베이스 데이터의 퍼지 쿼리를 구현하는 방법

created函数中获取输入框传来的keyWord

getData(offset,limit)函数使用axios向后端根据keyWord查询数据,其中offsetlimit是分页查询的参数。

//请求数据库数据的方法
    getData(offset,limit){
      this.axios.post(&#39;/php/search.php&#39;, qs.stringify({
        offset: offset,
        limit: limit,
        keyWord: this.keyWord
      }), { headers: { &#39;Content-Type&#39;: &#39;application/x-www-form-urlencoded&#39; } }).then((res) => {
        this.total = res.data.total
        this.resultList = res.data.data
      }).catch((err) => {
        this.$message.error(err)
      })
로그인 후 복사

获取数据成功后就会将数据存入resultList数组中,只需循环遍历该数组就可以向前端展示查询结果了。

后端使用的是php写的,主要利用了sql语句的like来实现模糊查询。
后端search.php文件,将数据库连接基本信息改为自己的。

<?php
$servername = "主机地址";
$username = "账户";
$password = "密码";
$dbname = "数据库名称";

// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
} 

$keyWord = $_POST[&#39;keyWord&#39;];
//获取前端的参数 开始和结束number
if ( !isset( $_POST[&#39;offset&#39;] ) ) {
 echo 0;
 exit();
};
$offset = ( int )$_POST[&#39;offset&#39;];

if ( !isset( $_POST[&#39;limit&#39;] ) ) {
 echo 0;
 exit();
};
$limit = ( int )$_POST[&#39;limit&#39;];
//分页查询数据库
$sql = "SELECT * FROM posts where title like &#39;%$keyWord%&#39; order by id desc LIMIT $limit OFFSET $offset";
$result = $conn->query($sql);

$sqlGetCount = "SELECT COUNT(*) cnt FROM posts where title like &#39;%$keyWord%&#39;";
$rescnt = $conn->query($sqlGetCount);
$rescnt = $rescnt->fetch_assoc();
$arr = array();
if ($result->num_rows > 0) {
 while ( $row = $result->fetch_assoc() ) {
    array_push( $arr, $row );
}
 //echo json_encode( $arr, JSON_UNESCAPED_UNICODE );
 echo json_encode(array_merge(array(&#39;data&#39;=>$arr),array(&#39;total&#39;=>(int)$rescnt[&#39;cnt&#39;])));
 
} else {
    echo 0;
}
mysqli_close( $conn );
?>
로그인 후 복사

注意sql语句:

SELECT * FROM posts where title like &#39;%$keyWord%&#39; order by id desc LIMIT $limit OFFSET $offset;
로그인 후 복사

like后面应该使用 '%$keyWord%‘传递参数,而不是 %' $keyWord'%rrreee
입력란과 표시 결과가 더 이상 동일한 보기에 있지 않으므로 경로 점프 시 검색 결과가 결과가 표시되는 페이지로 전달됩니다. /code>가 여기에 사용됩니다.

검색 기능:

Vue가 Mysql 데이터베이스 데이터의 퍼지 쿼리를 구현하는 방법구현 방법 Mysql 데이터베이스 데이터에 대한 Vue 퍼지 쿼리

🎜SearchResult.vuecode🎜🎜🎜Vue는 Mysql 데이터베이스 데이터의 퍼지 쿼리를 어떻게 구현합니까?🎜🎜created 함수의 입력 상자에서 keyWord를 가져옵니다🎜🎜 getData(offset,limit) 함수는 axios를 사용하여 백엔드에서 keyWord를 기반으로 데이터를 쿼리합니다. 여기서 offset limit는 페이징 쿼리의 매개변수입니다. 🎜rrreee🎜데이터를 성공적으로 얻은 후에는 데이터가 resultList 배열에 저장됩니다. 쿼리 결과를 프런트 엔드에 표시하려면 배열을 반복하기만 하면 됩니다. 🎜🎜백엔드는 php로 작성되었으며 주로 sql 문의 like를 사용하여 퍼지 쿼리를 구현합니다. 🎜백엔드 search.php 파일에서 기본 데이터베이스 연결 정보를 원하는 대로 변경하세요. 🎜rrreee🎜SQL 문에 유의하세요. 🎜rrreee🎜like 뒤에 '%$keyWord%'가 와야 % '$keyWord'%, 함정입니다. 🎜이것은 입력 데이터를 기반으로 한 퍼지 쿼리 제목이며, 이는 데이터 세그먼트의 제목으로 변경되어 다른 콘텐츠를 쿼리할 수 있습니다. 🎜🎜3. 결과🎜🎜🎜🎜

위 내용은 Vue가 Mysql 데이터베이스 데이터의 퍼지 쿼리를 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:yisu.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿