2009-09-22 4 views
0

나는 간단한 SQL 문을 가지고 있으며 반환 된 행의 수에 따라 다른 작업을 수행하려고합니다. 하나 이상의 행이 발견PHP + mysql_num_rows 문제가 발생 했습니까?

$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

빠른 답변을 확인하지 마십시오. 사람들이 대답하도록하십시오. 이 대답은 효과가 있을지 모르지만 여전히 나쁜 대답입니다. –

답변

-4

0을 반환 또는 null, 당신은 확인

case($result_lists == 0 or null): 

아니면

case(empty($result_lists)): 
+1

switch 문이 그렇게 작동하지 않습니다. 나쁜 대답과 -1. –

1

당신은 그와 같은 스위치를 사용하지 말아야있다.

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

올바른 방법입니다. 그것을하기 위해 if와 elses를 사용하고, yadayda! 당신의 버그는 사라질 것입니다.

왜? case은 문장을 평가하지 않기 때문에. 의 내용과 case의 내용 만 비교합니다.

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) 
+0

+1에 대한 설명이 나와 있습니다. 그리고 로봇의 코드 라인을 위해 할 수 있다면 +1을 더 추가 할 것입니다 :'if (0 == 0)': D –

관련 문제