如果查询未返回任何结果,如何停止执行脚本

时间:2011-11-22 02:04:28

标签: php mysql

在我的页面中,我有多个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>";
   }
?>

4 个答案:

答案 0 :(得分:0)

在while循环中停止执行使用break语句

类似

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

请记住,这会立即停止循环。如果你只是想&#34;隐藏&#34;空结果尝试这样的事情

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

答案 1 :(得分:0)

使用BREAK退出while循环。我很困惑。如果查询没有返回任何内容,那么你无论如何都不会循环,对吧?

修改

听起来你可能正在遍历页面中的一组company_id,然后为每个公司获取类别,对吗?

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

如果这是正确的,那么休息会让你离开你的内心,然后进入下一家公司,但是,如果没有类别,那么就没有什么可以突破。

答案 2 :(得分:0)

我不鼓励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>";
        }
    }
}
?>

答案 3 :(得分:0)

始终有效的最简单方法之一是 die()功能

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

或者您可以添加错误消息

die("No results found!");