带有多个单词的PHP Mysql搜索查询

Posted

技术标签:

【中文标题】带有多个单词的PHP Mysql搜索查询【英文标题】:Php Mysql search query with multiple words 【发布时间】:2016-06-23 06:09:44 【问题描述】:

我想搜索最多 3 个单词与多个字段匹配的数据库,我正在使用给定的代码:

$hotel_name=trim($_GET['hotel_src_key']);
$search_type=trim($_GET['hotel_src']);
$pieces = explode(" ", $hotel_name);

//echo $pieces[1]; // piece2

$search1=$pieces[0];
$search2=$pieces[1]; 
$search3=$pieces[2];
echo $search1.$search2.$search3; 

if($search_type=="any hotel")

$rest ="WHERE hotel_name like '%$search1%' AND hotel_name like '%$search2%'AND hotel_name like '%$search3%' OR city like '%$search1%' AND city like '%$search2%' AND city like '%$search3%'";


if($search_type=="hotel city")
$rest="WHERE city like '%$search1%' AND city like '%$search2%' AND city like '%$search3%'";


if($search_type=="hotel name")
$rest="WHERE hotel_name like '%$search1%' AND hotel_name like '%$search2%' AND hotel_name like '%$search3%'";



$stmt=$connc->query("SELECT * FROM  hotels  $rest ORDER BY h_id ASC");
$rc = $stmt->num_rows;  

但是当我在(search_type=any hotel) 中使用关键字"agra jaipur delhi" 搜索酒店时,它无法正常工作,然后结果显示0 我该如何解决这个问题?

【问题讨论】:

尝试为此“WHERE (hotel_name like '%$search1%' AND hotel_name like '%$search2%'AND hotel_name like '%$search3%' ) OR (city like ' %$search1%' AND city like '%$search2%' AND city like '%$search3%') 当我输入关键字agra jaipur agra jaipur 是城市然后结果是0 当我只输入关键字agra 一个字然后工作良好 @ranbir 没有你的回应。删除我的答案。我认为它对你没用 【参考方案1】:
WHERE hotel_name like :search1 OR hotel_name like :search2 or hotel_name like :search3 

如果您使用 PDO,请使用准备好的语句 http://php.net/manual/en/pdo.prepare.php,如果您使用 mysqli,请使用 http://php.net/manual/en/mysqli.prepare.php

【讨论】:

我正在使用mysqli

以上是关于带有多个单词的PHP Mysql搜索查询的主要内容,如果未能解决你的问题,请参考以下文章

Mysql对字谜求解器的多个查询

PHP MYSQL 查询未获取多个 WHERE 条件

PHP Code Igniter搜索多个单词

如何使用 PHP 搜索包含多个单词的值的数据库?

PHP/PDO/MySQL:将多个查询转换为单个查询

如何让 django 中的 Q 查找查找多个值