如何在php中创建搜索过滤器


how to create a search filter in php?

这是我第一次创建搜索过滤器。我想到了"switch statement"。无论用户输入什么关键字,它都应该在switch语句中检查。该switch语句将检查值是否存在于mysql数据库中。如果它存在,那么它将在一个表中显示信息。如果没有,那么它将重定向到"NoResultsFound.html"。到目前为止,这就是我的想法。我说的对吗?如果不是,我应该修改什么?

为什么不使用SQL来完成呢?

SELECT * FROM wherever WHERE keywords LIKE '%keyword%'

这将返回匹配关键字的行,如果它返回空记录集,您可以将它们重定向到NoResultsFound.html

这个词有特殊的含义,与ArtistName和SongName没有任何关系。

那么,从所有字段的子字符串搜索开始。

$search = mysql_real_escape_string($_GET['search']);
$query  = "SELECT * FROM table WHERE ArtistName LIKE '%$search%' OR SongName LIKE '%$search%'";

还要注意,在任何地方重定向用户是没有用的。停留在同一页面,在搜索字符串中显示输入的值(通过htmlspecialchars()处理),并让用户编辑它并进行另一次搜索

您只需要将搜索关键字添加到查询中,然后检查查询是否返回任何结果。我将引用我在这里构建的一个简单的数据库连接类(PHP),因为它更容易解释:

$keyword = mysql_real_escape_string($_POST['keyword']);
$db = new Database();
$db->connect(DB_NAME,DB_HOST,DB_USER,DB_PASS);
$query   = "SELECT your_field FROM your_table WHERE target_field LIKE '%".$keyword."%'";
$result = getAssocArray($query);
if (!empty($result)) {   
     // do something if there is at least a match 
}
else {
     // do something if there is not match
}
$db->disconnect();

如果有帮助请告诉我