簡體   English   中英

如果查詢未返回任何結果,如何停止執行腳本

[英]How to stop execution of the script if query does not return any result

在我的頁面中,我有多個company_id 其中一些在以下查詢中未返回任何結果。

我的問題是我應該為他們做什么? 如果什么都沒找到,我應該保留代碼還是應該停止執行? 如果是,我該怎么做?

<?php
   $categories = mysql_query('SELECT distinct(category),id FROM products WHERE company_id = ' . $cid );
   while($cat = mysql_fetch_assoc($categories)) 
   {
      echo "<a href='#'>" . $cat['category'] . "</a><br>";
   }
?>

停止在while循環中執行,使用break語句

就像是

while($cat = mysql_fetch_assoc($categories)) 
{
   if ( $cat['category'] == '' )
      break;                   
   echo "<a href='#'>" . $cat['category'] . "</a><br>";
}

請記住,這將立即停止循環。 如果您只想“隱藏”空結果,請嘗試這樣的操作

while($cat = mysql_fetch_assoc($categories)) 
{
   if ( $cat['category'])            
   echo "<a href='#'>" . $cat['category'] . "</a><br>";
}

使用BREAK退出while循環。 我很困惑。 如果查詢不返回任何內容,那么您就不會循環,對嗎?

編輯

聽起來您可能正在頁面中遍歷一組company_id,然后獲取每個類別的類別,對嗎?

foreach ($list_companies as $cid)
{
   LOAD CATEGORIES for $cid
   while (have categories)
   {
     echo link to it
   }
}

如果這是正確的,那么休息會讓您脫離內心而進入下一家公司,但是同樣,如果沒有類別,則沒有任何休息的機會。

我不鼓勵break循環,您應該在傳遞到循環之前檢查是否有mysql_num_rows()返回的行。

<?php
if(isset($cid)){
    $categories = mysql_query('SELECT distinct(category),id FROM products WHERE company_id = ' . $cid );
    if(mysql_num_rows($categories)>=1){
        while($cat = mysql_fetch_assoc($categories)){
            echo "<a href='#'>" . $cat['category'] . "</a><br>";
        }
    }
}
?>

始終有效的最簡單方法之一是die()函數

if(empty($var)) {
    die();
}

或者您可以添加錯誤消息

die("No results found!");

暫無
暫無

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

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