我有一个PHP关键字搜索脚本,它搜索MySQL数据库,然后显示结果。当前,脚本根据附加到MySQL数据库中的字段的单个关键字来查找结果。
我的问题是:如果一个或多个关键字在用户查询中匹配,如何将多个关键字附加到一个字段并返回结果?
我可以在我的数据库中定义关键字并用逗号分隔它们吗?例如,这个,在,在,字段中
<?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);
}
?>发布于 2011-10-21 16:56:12
要么使用全文索引,要么将关键字列表拆分成一个复合词"where .或like .或like .“声明:
$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);将复合数据存储在关系数据库中的单个字段中很少是个好主意,特别是当您需要访问整个字段的子部分时。关键字应该存储在一个单独的表中,每个记录一个关键字。然后,可以使用链接表将多个关键字关联到父表中的每个记录。
https://stackoverflow.com/questions/7852669
复制相似问题