簡體   English   中英

在PHP MySQL搜索中找不到結果時顯示消息

[英]Displaying message when no results found in PHP MySQL search

我有一個PHP搜索腳本,用於查詢MySQL數據庫。 目前,當沒有顯示結果時,腳本顯示和錯誤。 如果沒有返回任何內容,如何顯示“未找到結果”這樣的消息?

我的PHP腳本是:

<?php

mysql_connect("localhost","username","password");
mysql_select_db("database");

if(!empty($_GET['q'])){
$query=mysql_real_escape_string(trim($_GET['q']));
$searchSQL="SELECT * FROM links WHERE `title` LIKE '%{$query}%'  LIMIT 8";
$searchResult=mysql_query($searchSQL);

while ($row=mysql_fetch_assoc($searchResult)){
    $results[]="<div class='webresult'><div class='title'><a href='{$row['url']}'>{$row['title']}</a></div><div class='desc'>{$row['description']}</div><div class='url'>{$row['url']}</div></div>";
}

echo implode($results);
}

?>

創建一個MYSQL連接並粘貼以下代碼

$sql="SELECT * FROM tablename WHERE columnname LIKE your variable or constant ";
$result=mysql_query($sql);

$count=mysql_num_rows($result);

if($count>=1){if result was found}

else {if result was not found}

?>
if (empty($results)) { 
    echo 'No results found'; 
} else {
    echo implode($results);
}

您可以計算數組中元素的數量,並繼續進行內爆或顯示您提到的消息。

<?php
     if(count($results) > 0){
         echo implode($results);
     }
     else {
         echo "No results were found.";
     }
?>

你也真的不應該使用mysql_ *函數。 使用改進版本(mysqli_ *)或PDO。

請嘗試以下方法:

<?php

mysql_connect("localhost","username","password");
mysql_select_db("database");

if(!empty($_GET['q'])){
$query=mysql_real_escape_string(trim($_GET['q']));
$searchSQL="SELECT * FROM links WHERE `title` LIKE '%{$query}%'  LIMIT 8";
$searchResult=mysql_query($searchSQL);

if(mysql_num_rows($searchResult) <= 0)
{
    echo "No results";
} else {

    while ($row=mysql_fetch_assoc($searchResult)){
        $results[]="<div class='webresult'><div class='title'><a href='{$row['url']}'>{$row['title']}</a></div><div class='desc'>{$row['description']}</div><div class='url'>{$row['url']}</div></div>";
    }

    echo implode($results);
} 
}

?>

另外請使用MySQLi或PDO,因為它更安全,更好用,有些信息可以在下面找到。 我個人更喜歡MySQLi,但PDO中的預處理語句非常好,每次查詢時都會保存一些代碼行;)

MySQLi和PHP

PDO和PHP

<?php

mysql_connect("localhost","username","password");
mysql_select_db("database");

if(!empty($_GET['q'])){
    $query          =   mysql_real_escape_string(trim($_GET['q']));
    $searchSQL      =   "SELECT * FROM links WHERE `title` LIKE '%{$query}%'  LIMIT 8";
    $searchResult   =   mysql_query($searchSQL);

    // the query was run successfully 
    // and it returned at least a result
    if(is_resource($searchResult) && mysql_num_rows($result) > 0){
        while ($row=mysql_fetch_assoc($searchResult)){
            $results[]="<div class='webresult'><div class='title'><a href='{$row['url']}'>{$row['title']}</a></div><div class='desc'>{$row['description']}</div><div class='url'>{$row['url']}</div></div>";
        }

        echo implode($results);
    } else{
        echo 'No Results were found';
    }
}
?>

在while語句中如何使用簡單的計數器:

$i = 0;

while (condition) {
   $i++;
   do stuff;
}

if ($i ==0) {echo 'No results found';}

您還可以使用函數mysql_num_rows ,它將告訴您查詢返回的行數。

$rows = mysql_num_rows($searchResult);
if($rows <= 0){
    /* Code if there are no rows */
}
else{
    /* At least one row has been found */
}
if (mysql_num_rows($searchResult) == 0) {
   echo "some error message"; 
} else { 
  ... process data
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM