这是我第一次创建搜索过滤器。我想到了"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();
如果有帮助请告诉我