2011-06-25 56 views
4

我有一個查詢MySQL數據庫的PHP搜索腳本。目前,當沒有顯示結果時,腳本顯示並顯示錯誤。如何在沒有返回任何內容時顯示「找不到結果」的消息?在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); 
} 

?> 
+0

mysql_num_result – dynamic

回答

3
if (empty($results)) { 
    echo 'No results found'; 
} else { 
    echo implode($results); 
} 
+2

這將失敗無論哪種方式,這是因爲當循環將在此時運行,並且會發出錯誤。 – Shef

0

你也可以使用該功能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 */ 
} 
0
if (mysql_num_rows($searchResult) == 0) { 
    echo "some error message"; 
} else { 
    ... process data 
} 
1

嘗試以下操作:

<?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 and PHP

PDO and PHP

+0

這會在最後一行發生錯誤。在括號之間移動'echo implode($ results)'。 – Sjoerd

+0

謝謝你,忘記了代碼的結尾....編輯反映 –

3

你可以指望數組中元素的個數,和要麼繼續你的內爆,要麼顯示你提到的信息。

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

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

1
<?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'; 
    } 
} 
?> 
3

創建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} 

?> 
0

這段代碼如何在while語句一個簡單的計數器:

$i = 0; 

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

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