繁体   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