2014-10-29 27 views
0

只是想從模型返回一個變量到控制器,然後檢查它的值是0還是1,但它不起作用。我使用Codeigniter。你能檢查我的代碼,並幫我找到我的錯誤。Codeigniter返回變量,並檢查它的值

這裏是我的模型:

public function did_get_status($id){   

     $this->db->select('*'); 
     $this->db->from('members'); 
     $this->db->where('id',$id);  
     $query = $this->db->get(); 

     if ($query->num_rows() == 1) { 

    $row = $query->row(); 
    return array(
    'member_status' => $row->member_status, 
    ); 
     } 
     else{ 
     return false; 
     } 

    } 

這裏是我的控制器:

$status_info = $this->model_users->did_get_status($id); 
$status = $status_info['member_status'];   
       if ($status === 0) { 
        // 
       } 
       else if ($status === 1) { 
        // 
       }     
      } 
+0

如果您正在尋找一個布爾值false,那麼不要檢查boolean false(false === $ status)是否爲0,並且您不需要「if if if」只是「if else」。在PHP中忽略這個事實,false可以等於0,並且你的編程生活會更容易。 – Clutch 2014-10-29 14:33:41

回答

3

我想先打印一下你從函數中得到的值。 像這是我的控制器

$status_info = $this->model_users->did_get_status($id); 
    var_dump($status_info); 

如果該打印它作爲一個陣列,然後用這種類型

$status = $status_info['member_status'];   
      if ($status == 0) { 
       // 
      } 
      else if ($status == 1) { 
       // 
      }     
     } 

替換「===」相匹配值「==」,因爲returing類型可能並不一些。像數組返回1,0作爲字符串和1,o在這裏是intiger。

+1

'==='將檢查變量/對象的類型。 '=='將匹配值。 – SSS 2014-10-30 06:43:29

1

明顯需要考慮的要點:

是否只有一個符合此ID在數據庫中?

您是否嘗試過使用double equals而不是triple equals?

1

這是所有可調試的。

$status = $status_info['member_status'];

你不能這樣做,因爲該功能可以返回false。你不做錯誤處理。

if ($status === 0)

這可能是一個不同的數據類型,可能是一個字符串。你做嚴格的比較。使用==。或者,更好的是,在模型中修復它:(int) value