[英]Php Search engine error
我正在尝试编写搜索引擎代码。
除此之外,如果我输入西海岸这样的查询,我也会得到东海岸的结果。 发生这种情况的原因是,东西两个关键字中的每个单词都包含“ coast”。
但是我想使用这行代码将两者分开:
<?php
$k = $_GET['k'];
$terms = explode(" ", $k);
$query = "SELECT * FROM Search WHERE ";
foreach ($terms as $each){
$i++;
if($i == 1)
$query .= "keywords LIKE '%$each%' ";
else
$query .= "OR keywords LIKE '%$each%' ";
}
如果我在搜索表单中回显了使用的关键字,则会被分隔开,但是更进一步,它们不会
我怎样才能解决这个问题?
<?php
$k = $_GET['k'];
$terms = explode(" ", $k);
$query = "SELECT * FROM Search WHERE ";
foreach ($terms as $each){
$i++;
if($i == 1)
$query .= "keywords LIKE '%$each%' ";
else
$query .= "OR keywords LIKE '%$each%' ";
}
if($k == "" || $k == " ")
{
echo "<p> Please enter a valid search term."; //If search is empty or contains only a space.
exit;
}
//connect to database
mysql_connect("LOCALHOST" ,"ROOT" ,"PASSWORD");
mysql_select_db("DATABASE");
$query = mysql_query($query);
$numrows = mysql_num_rows($query);
if($numrows > 0){
while($row = mysql_fetch_assoc($query))
{
$id = $row['id'];
$title = $row['title'];
$description = $row['description'];
$keywords = $row['keywords'];
$link = $row['link'];
echo "<h2><a href ='$link' class='searchcolor' color='#a8a8a8'> $title</a></h2>
$description<br />
This page contains information about \"<b>$query</b>\"<br /><hr>";
}
}
else
echo "No results for \"<b>$k</b>\"";
//disconnect
mysql_close();
?>
您的查询:
SELECT * FROM Search WHERE keywords LIKE '%west%' OR keywords LIKE '%$coast%';
由于OR
将返回与任何一个关键字匹配的结果。 如果希望结果与所有关键字匹配,请使用AND
。
即改变
$query .= "OR keywords LIKE '%$each%' ";
至
$query .= "AND keywords LIKE '%$each%' ";
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.