在搜索MySQL数据库时返回“抱歉,没有找到结果”

时间:2011-08-15 22:14:21

标签: php javascript mysql search

我目前有一个知识库的搜索功能,可以过滤掉一系列常用词(a,able,about等),以便它们不会在查询中发送。不幸的是,当有人搜索其中一个常见词时,它什么都不返回(而当它没有被过滤时,查询我有代码返回“抱歉,没有找到结果”并在数据库中记录该搜索)。

如果搜索到过滤后的单词,我需要对其进行同样的操作,但没有找到结果,但我不确定最佳方法。以下是过滤后的代码。

//Defines common words to be striped.
$commonWords = array('a','able', etc)
//Strips common words from being included as a search term
$searchterm = preg_replace("/\b(".implode('|',$commonWords).")\b/i",'',$searchterm);

if(mysql_num_rows($result) == 0) {
echo "<img src=\"images/oops.png\"> Sorry, no results found.  <br /><br /><div id=\"custformSubmit\">Chat Now</div>";
//Records missing search terms in a database
mysql_query("INSERT INTO quer (IP, Query) VALUES ('$ip','$search')") or die(mysql_error());;

我理解如果(mysql_num_rows($ result)== 0)不起作用,因为在提交时实际上没有搜索到任何内容,但我不确定解决该问题的最佳方法。

编辑:此外,div id'custformSubmit'会显示一个聊天窗口,与必要的代表聊天。

2 个答案:

答案 0 :(得分:1)

你应该在过滤后修剪字符串并检查是否(空($ filteredstring))然后不执行sql查询和打印消息,找不到任何内容。

如果没有复杂的模式,使用str_replace比使用preg更快。您可以将常用单词设置为数组的键,替换('')作为值,然后执行类似str_replace(array_keys($ filter),$ filter,$ string)

答案 1 :(得分:0)

如果替换次数==原始查询中的字数,您可以使用preg_replace的替换计数器(请参阅documentation)并输出Sorry, no results found.

可能有更好的方法可以做到这一点,但这就是我建议使用的代码。