不要搜索太空(spatie)

时间:2013-12-03 12:46:35

标签: php search plugins search-engine

我的问题是关于我在php中的搜索引擎脚本。 该脚本基本上正在工作,但还有一个问题。 如果我只在搜索词后面输入或只是一个空格,则显示我的所有结果。

脚本:

<?php
        $input = $_GET['input'];//Note to self $input in the name of the search feild
        $terms = explode(" ", $input);
        $query = "SELECT * FROM search WHERE ";

        foreach ($terms as $each){
            $i++;
            if ($i == 1)
                $query .= "keywords LIKE '%$each%' ";
            else
                $query .= "OR keywords LIKE '%$each%' ";
        }

        // connecting to our mysql database
        mysql_connect("*****", "*****", "*****");
        mysql_select_db("*****");

        $query = mysql_query($query);
        $numrows = mysql_num_rows($query);
        if ($numrows > 0){

            while ($row = mysql_fetch_assoc($query)){
                $id = $row['id'];
                $title = $row['title'];
                $description = $row['description'];
                $keywords = $row['keywords'];
                $link = $row['link'];
                echo "<h2><a href='$link'>$title</a></h2>
                $description<br /><br />";

            }

        }
        else
            echo "Er zijn geen resultaten gevonden voor \"<b>$input</b>\"";

        // disconnect
        mysql_close();
    ?>

这是我用来显示搜索字词结果的代码。

1 个答案:

答案 0 :(得分:0)

你应该只是在没有空“WHERE”条件的情况下阻止执行查询,例如你可以把那里显然是假的

 if ( !count(array_filter($terms))) {
   $query .= " 1 = 0 ";
 }

当然更好的是在这种情况下跳过任何查询执行