2014-10-29 80 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