我的问题是关于我在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();
?>
这是我用来显示搜索字词结果的代码。
答案 0 :(得分:0)
你应该只是在没有空“WHERE”条件的情况下阻止执行查询,例如你可以把那里显然是假的
if ( !count(array_filter($terms))) {
$query .= " 1 = 0 ";
}
当然更好的是在这种情况下跳过任何查询执行