PHP搜索引擎不工作?

时间:2014-07-30 05:53:24

标签: php mysql search mysqli

我正在开发一个简单的搜索引擎,可以为您提供信息,但我遇到了问题。你看,当我在搜索输入中放入一个空格时,它没有给你一条消息说"没有搜索关键词请再试一次"但是当您单击搜索按钮而不在搜索输入中添加任何内容时,它会起作用。我怎么能解决这个问题,使它适用于两者?

代码:     

if(!$db) {
    die('sorry we are having some problbems');
}


$searchTerm = mysqli_real_escape_string($db,$_GET['term']);

if ( empty($searchTerm))
{
echo("no key words searched please try again");
}
else
{
$sql = mysqli_query(
    $db,
    sprintf(
        "SELECT * FROM searchengine WHERE name LIKE '%s' LIMIT 0,20",
        '%'. $searchTerm .'%'
    )
);

while($ser = mysqli_fetch_array($sql)) {
    echo "<a href='$ser[pageurl]'>$ser[img]</a>";
}
}

mysqli_close($db);
?>

3 个答案:

答案 0 :(得分:3)

使用trim()删除前导和尾随空格。

$searchTerm = trim($searchTerm);

if ($searchTerm == '') {
    echo("no key words searched please try again");
} else {
    ...
}

答案 1 :(得分:0)

检查除空搜索词之外的空格。在这里,我使用正则表达式preg_match来查找可以输入的任何空格字符。

if (empty($searchTerm)||preg_match('!^\s+$!',$searchTerm))
  {
    echo("no key words searched please try again");
  }
else...

或仅使用preg_match

if (preg_match('!^\s*$!',$searchTerm))
  {
    echo("no key words searched please try again");
  }
else...

您可以使用的另一种方法是使用strlen

检查字符串长度
if (strlen($searchTerm)<4)
  {
    echo("no key words searched please try again");
  }
else...

答案 2 :(得分:-1)

尝试此查询而不是使用sprintf

    "SELECT * FROM searchengine WHERE name LIKE '%$searchsting%' LIMIT 0,20"