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

时间:2011-09-04 08:52:53

标签: php mysql

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

3 个答案:

答案 0 :(得分:4)

为什么不使用SQL来完成这个?

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

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

答案 1 :(得分:2)

嗯,“关键字”一词具有特殊含义,与ArtistName和SongName无关。

所以,从所有领域的子字符串搜索开始。

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

另请注意,在任何地方重定向用户都没有用处。只需停留在同一页面上,在搜索字符串中显示输入的值(通过htmlspecialchars()处理),然后让用户对其进行编辑并进行其他搜索

答案 2 :(得分:1)

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

$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();

如果有帮助,请告诉我。