[英]Php search engine not working?
我正在使用一個簡單的搜索引擎來獲取您的信息,但是我遇到了問題。 您會看到,當我在搜索輸入中添加空格時,並沒有顯示“沒有搜索到關鍵詞,請重試”的消息,但是當您單擊搜索按鈕而未在搜索輸入中添加任何內容時,它會起作用。 我該如何解決這個問題以使其與兩者同時使用?
碼:
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);
?>
使用trim()
刪除前導和尾隨空格。
$searchTerm = trim($searchTerm);
if ($searchTerm == '') {
echo("no key words searched please try again");
} else {
...
}
除空白搜索詞外,還要檢查空格。 在這里,我使用正則表達式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...
試試這個查詢,而不是使用sprintf
"SELECT * FROM searchengine WHERE name LIKE '%$searchsting%' LIMIT 0,20"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.