首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为基于PHP/MySQL关键字的搜索分配多个关键字

为基于PHP/MySQL关键字的搜索分配多个关键字
EN

Stack Overflow用户
提问于 2011-10-21 16:52:01
回答 1查看 676关注 0票数 0

我有一个PHP关键字搜索脚本,它搜索MySQL数据库,然后显示结果。当前,脚本根据附加到MySQL数据库中的字段的单个关键字来查找结果。

我的问题是:如果一个或多个关键字在用户查询中匹配,如何将多个关键字附加到一个字段并返回结果?

我可以在我的数据库中定义关键字并用逗号分隔它们吗?例如,这个,在,在,字段

代码语言:javascript
复制
<?php

mysql_connect("localhost","username","password");
mysql_select_db("database");

if(!empty($_GET['q'])){
$query=mysql_real_escape_string(trim($_GET['q']));
$searchSQL="SELECT * FROM questions WHERE `keywords` LIKE '%{$query}%'  LIMIT 1";
$searchResult=mysql_query($searchSQL);

while($row=mysql_fetch_assoc($searchResult)){
$results[]="{$row['result']}";
}

echo implode($results);
}

?>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-21 16:56:12

要么使用全文索引,要么将关键字列表拆分成一个复合词"where .或like .或like .“声明:

代码语言:javascript
复制
$keywords = explode(' ', $_GET['q']);
$likes = array()
foreach($keywords as $kw) {
   $kw = mysql_real_escape_string($kw);
   $likes[] = "keywords LIKE '%{$kw}%'";
}

$sql = "SELECT ... WHERE " . implode(' OR ', $likes);

将复合数据存储在关系数据库中的单个字段中很少是个好主意,特别是当您需要访问整个字段的子部分时。关键字应该存储在一个单独的表中,每个记录一个关键字。然后,可以使用链接表将多个关键字关联到父表中的每个记录。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7852669

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档