php + mysql_num_rows sorunu?

3 Cevap php

Ben basit bir sql deyimi var ve döndürülen satır sayısına bağlı olarak farklı bir eylem gerçekleştirmek istiyorum.

$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 veya daha fazla satır bulunursa sıfır satır (> 1) dava yürütülmektedir nedense, iade edilirse, o zaman doğru durumda, ancak, kullanılır.

Herkes yanlış gidiyor olabilir ne görebilir miyim?

Herhangi bir tavsiye takdir.

Teşekkürler.

3 Cevap

Sen switch deyimi kötüya - Eğer if s ile değiştirin ya da bu gibi değiştirmeniz gerekir:

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;
}

Ne şu anda yapıyoruz bu gibi:

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)

Böyle anahtarını kullanmanız gerekir.

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

Bunu yapmak için doğru yoldur. IFS ve bunu yapmak için elses ve yadayda kullanın! Sizin hata kaybolur.

Neden? case ifadeleri değerlendirmek için yapılmış değil çünkü. Sadece case içinde ne ile switch içinde ne karşılaştırın.

İade sıfır veya null, sen çek var

case($result_lists == 0 or null):

ya da belki

 case(empty($result_lists)):