搜索多个单词PHP mysqli
我有一个简单的搜索PHP脚本,但它的工作原理如下: 例如: 我在数据库中有“dvd creator设置”,但如果我想找到它,我需要写入整个字符串,如“dvd”或“dvd creator”。 是否有可能使其适用于“dvd creator”或“creator setup”之类的查询搜索多个单词PHP mysqli,php,mysql,mysqli,full-text-search,full-text-indexing,Php,Mysql,Mysqli,Full Text Search,Full Text Indexing,我有一个简单的搜索PHP脚本,但它的工作原理如下: 例如: 我在数据库中有“dvd creator设置”,但如果我想找到它,我需要写入整个字符串,如“dvd”或“dvd creator”。 是否有可能使其适用于“dvd creator”或“creator setup”之类的查询 if(isset($\u POST['searchh'])){ $searchValue=$_POST['search']; 如果($conn->connect\u错误){ echo“连接失败:”.$conn->conn
if(isset($\u POST['searchh'])){
$searchValue=$_POST['search'];
如果($conn->connect\u错误){
echo“连接失败:”.$conn->connect\u错误;
}否则{
$sql=“从文件名为“%$searchValue%”的pubfiles中选择*;
$result=$conn->query($sql);
而($row=$result->fetch_assoc()){
echo“文件名:
大小:.$row[“Size”]。.MB
上传人:.$row[“上传人”]。”
--------------
;
}
}
您可以在文件名
列上使用全文索引
alter table pubfiles add fulltext(filename);
它允许您使用MATCH()…根据
语法查询文件名列
select * from pubfiles where match(filename) against ('dvd creator');
这将找到“dvd”、“dvd创建者”、“dvd创建者设置”、“创建者”
还有一个布尔模式
,允许您根据需要标记所有单词
select * from pubfiles
where match(filename) against ('+dvd +creator' IN BOOLEAN MODE);
这将只返回“dvd creator”和“dvd creator setup”
- 相关的小提琴-
“..%$searchValue%”“
)执行操作,其中文件名(如“%dvd%”和文件名(如“%creator%”)将您暴露在SQL注入中。想象有人向您的搜索字段输入类似的内容-”;删除表用户;
select * from pubfiles
where match(filename) against ('+dvd +creator' IN BOOLEAN MODE);