SELECT查询后在while循环之前检查num_rows的用处是什么?

时间:2012-03-05 14:16:38

标签: php mysql sql while-loop

在许多脚本中,程序员在运行相应的while循环之前检查SELECT查询是否返回了任何记录

$result=mysql_query("SELECT * From table WHERE column='XX'");
if(mysql_num_rows($result)>0) {
    while($row=mysql_fetch_array($result)){
    ...
    }
}

这项检查是否必要或有用?因为当没有返回任何记录时,while循环不会循环。检查返回的行数是否可以提高性能?

2 个答案:

答案 0 :(得分:5)

通常在没有返回行的情况下执行此操作,并且您只想为用户打印出一条好消息。如果你只有一个while循环,你需要保留一个计数器,这可能会变得丑陋。

因此它主要用于

else {
  echo "No results found!";
}

答案 1 :(得分:1)

对于程序员来说,如果没有返回任何行,很明显不会执行WHILE循环中的代码。这是一个常见的结构,因此无需进一步说明。因此,除非有分支,否则不需要IF

  1. 根据敏捷原则,我们不应仅仅因为我们以后可能需要它而添加代码。
  2. 我们应尽可能简化代码。
  3. 因此,有两个理由不把冗余代码放进去,我想不出任何理由把它放在那里。

    不可

    $result=mysql_query("SELECT * From table WHERE column='XX'");
    if(mysql_num_rows($result)>0) {
        while($row=mysql_fetch_array($result)){
          ...
        }
    } else {
      // Do something
    }
    

    不可

    $result=mysql_query("SELECT * From table WHERE column='XX'");
    while($row=mysql_fetch_array($result)){
        ...
    }
    

    <强> BAD:

    $result=mysql_query("SELECT * From table WHERE column='XX'");
    if(mysql_num_rows($result)>0) {
        while($row=mysql_fetch_array($result)){
            ...
        }
    }