基本上我有一个搜索功能
在我的数据库里
我的关键词是
The issue
当我搜索macbook时,它显示了所有三个都是正确的,但是当我搜索macbook时,它仍然显示macbook。同样的事情发生在我搜索macbooks 13.3英寸时,它仍然显示了所有3台macbook。
这是代码
<?php
if(isset($_GET["search"]))
{
$condition = '';
$query = explode(" ", $_GET["search"]);
foreach($query as $text)
{
$condition .= "keywords LIKE '%".mysqli_real_escape_string($connect, $text)."%' OR ";
}
$condition = substr($condition, 0, -4);
$sql_query = "SELECT * FROM products WHERE " . $condition;
$result = mysqli_query($connect, $sql_query);
if(mysqli_num_rows($result) > 0)
{
while($row = mysqli_fetch_array($result))
{
$id = $row['id'];
$title = $row['title'];
$price = $row['price'];
$description = $row['description'];
$keywords = $row['keywords'];
$link = $row['link'];
$metadata = $row['metadata'];
include('inca.php');
}
}
else
{
echo '<label>Data not Found</label>';
}
}
?>当我搜索Macbook air 13.3英寸时,我希望它只显示macbook air,也就是13.3英寸。
发布于 2016-07-20 13:27:29
在SQL语句中使用OR,可能意味着它是一个AND。
到目前为止,您正在搜索'Macbook‘或'air’或'pro‘等,其中包含了其中的一个关键字。
使用并用于此;它将在DB中搜索使用循环中分配的所有关键字的内容。它将搜索“Macbook”和“air”,而不是将它们分开。
因此,与其:
foreach($query as $text) {
$condition .= "keywords LIKE '%".mysqli_real_escape_string($connect, $text)."%' OR ";
}尝试:
foreach($query as $text) {
$condition .= "keywords LIKE '%".mysqli_real_escape_string($connect, $text)."%' AND";
}https://stackoverflow.com/questions/38482021
复制相似问题