php + mysql_num_rows问题?

时间:2009-09-22 11:36:16

标签: php mysql

我有一个简单的sql语句,我想根据返回的行数执行不同的操作。

$result_lists = mysql_num_rows(mysql_query("SELECT * FROM db_table"));
    //To see the number returned
    print_r($result_lists);

    switch($result_lists) {
         case($result_lists == 0):
         //To prove which option is actually happening 
         print_r('lists==0: '.$result_lists);  
         break;

         case($result_lists > 1):
         //To prove which option is actually happening 
         print_r('lists>1: '.$result_lists);
         break;

         case($result_lists == 1):
         //To prove which option is actually happening 
         print_r('lists==1: '.$result_lists);  
         break;
    }

如果找到1行或更多行,则使用正确的大小写,但是,如果返回零行,则由于某种原因执行(> 1)大小写。

任何人都可以看到可能出现的问题吗?

任何建议表示赞赏。

感谢。

3 个答案:

答案 0 :(得分:8)

您正在滥用switch语句 - 您应该将其替换为if或更改为:

switch ($result_lists)
{
     case 0:
         //To prove which option is actually happening 
         print_r('lists==0: '.$result_lists);  
         break;

     case 1:
         //To prove which option is actually happening 
         print_r('lists==1: '.$result_lists);  
         break;

     default:
         //To prove which option is actually happening 
         print_r('lists>1: '.$result_lists);
         break;
}

你现在正在做的是这样的:

case($result_lists == 0):

// is like doing
if ($result_lists == ($result_lists == 0))

// which when $result_lists = 0 is the same as

if ($result_lists == true)
if (0 == 1)
// therefore false so it drops through to the next statement

case($result_lists > 1)
// the same as
if ($result_lists == ($result_lists > 1))
// when $result_lists = 0:
if ($result_lists == false)
if (0 == 0)

答案 1 :(得分:1)

你不应该使用这样的开关。

switch($var)
{
    case 1:
        //Some stuff
        break;
    case 2:
        //Some stuff
        break;
    default:
        break;
}

这是正确的方法。使用ifs和elses来做,yadayda!你的错误会消失。

为什么?因为case不用于评估语句。它只会将switch中的内容与case中的内容进行比较。

答案 2 :(得分:-4)

返回零或null,你有检查

case($result_lists == 0 or null):

或者

 case(empty($result_lists)):