【发布时间】:2013-08-29 14:45:00
【问题描述】:
我正在处理一个快速搜索条形码,它看起来像这样:
搜索栏.php:
<form method="post" action="search.php">
<input type="text" name="search" />
<input type="submit" />
</form>
搜索.php:
<?php
include("config.php");
$search = mysql_real_escape_string($_POST['search']);
$data = mysql_query("SELECT * FROM shop WHERE name LIKE '%$search%' OR id LIKE '%$search%' OR description LIKE '%$search%' OR keywords LIKE '%$search%' ORDER BY id DESC ") or die(mysql_error());
while ($info = mysql_fetch_array($data)) {
$name = stripslashes($info['name']);
$desc = stripslashes($info['description']);
Print "<h3><a href=\"result.php?product=".$name."\">".$name."</a>: <font color=\"#cd0000\">".$desc."</font></h3><br>";
}
echo $name;
?>
结果.php:
<?php
$result = $_GET['product'];
echo $result;
?>
现在我的问题是我的搜索中的通配符。假设有人搜索两个词“foo bar”。按照我的说法,这些词必须完全按照这个顺序排列,它们之间要有一个空格才能出现。有没有办法在我的搜索参数中,如果“foo”和“bar”这两个词在任何地方(甚至不是彼此相邻),结果就会显示出来?如果单词的顺序按顺序颠倒,我也希望它能够工作,“bar foo”(再次甚至不是彼此相邻)。
【问题讨论】:
-
您可以在空格上拆分搜索词并为每个词添加一个新的like 子句,但我怀疑这是人们所期望的。如果我搜索“给我”,我不会期望得到“美国立法者”的结果
-
我强烈建议您先对该主题进行一些小搜索,因为正如您可能想象的那样,您不是第一个关心这个问题的人。顺便说一句,现场搜索并不是那么糟糕。我记得有一个或其他问答材料很好地处理了这个主题,并且在不同的角度和不同的细节层次上。