codeigniter中的模型返回值

时间:2013-03-17 14:07:04

标签: php codeigniter

我将模型中的返回值存储在$result

$result = $this->absensi_m->absensi();

根据我在absensi()函数中返回的内容,$result的值将是其中之一:

  • FALSE
  • 'sudah absen'(一个字符串)
  • 1(表示成功)

然后我尝试使用$result查看echo $result;值并返回 1

但是,当我尝试使用$result进行某些验证时,我收到一个奇怪的错误:

        if($result == FALSE)
            $data['result'] = 'Anda Belum Terdaftar, Silahkan Daftar Dahulu :D';
        else if($result == 'sudah absen')
            $data['result'] = 'Anda Sudah Absen Hari Ini :D';
        else 
            $data['result'] = 'Selamat Datang, '.$this->input->post('txtNama').'! ^^';

虽然$result的值 1 ,但第二个if($result == 'sudah absen')始终返回 TRUE

这是怎么回事?谢谢:D

这是我模型中的absensi()函数:

public function absensi() {
        $nama = $this->input->post('txtNama');
        $tanggal = date('Y-m-d', now());

        $this->db->select('umat_id');
        $terdaftar = $this->db->get_where('msumat', array('nama' => $nama));

        $row = $terdaftar->row_array();
        $sudah_absen = $this->db->get_where('msabsensi', array('umat_id' => $row['umat_id'], 'absensi_tanggal' => $tanggal));

        if($terdaftar->num_rows() != 0 && $sudah_absen->num_rows() == 0)
        {
            $data_umat = array(
            'umat_id' => $row['umat_id'],
            'status' => 'H',
            'absensi_tanggal' => date('Y-m-d')
            );

            return $this->db->insert('msabsensi', $data_umat);
        }
        else if($sudah_absen->num_rows() != 0)
            return 'sudah absen';
        else
            return FALSE;
    }

答案: 我会在这里回答,因为你可能会对很多评论/对话感到困惑。

我通过var_dump()echo感谢下面的答案)意识到了最新情况:

$result = $this->absensi_m->absensi();
var_dump($result);
echo $result;

var_dump()返回bool(true)echo返回1.这意味着发生此问题是因为我认为$result值为1(整数),而实际值为TRUE(bool)。

结论是:使用TRUE(bool)值回显变量将得到1(整数),因此请使用var_dump()而不是echo

2 个答案:

答案 0 :(得分:4)

首先你无法返回:

return $this->db->insert('msabsensi', $data_umat);

这样做:

 $this->db->insert('msabsensi', $data_umat);
 return ...-> 1 or true or what you need

然后你应该这样做:

if(!$result){
            $data['result'] = 'Anda Belum Terdaftar, Silahkan Daftar Dahulu :D';
        }
    if($result == 'sudah absen'){
            $data['result'] = 'Anda Sudah Absen Hari Ini :D';
         }
       if($result && $result !== 'sudah absen'){
            $data['result'] = 'Selamat Datang, '.$this->input->post('txtNama').'! ^^';
          }

然后使用var_dump();检查结果是什么:

var_dump($result);

答案 1 :(得分:2)

你确定发生了这种情况吗?你确定$result=1吗?

我觉得很难相信。这是您代码的fiddle输出

您的函数返回true而不是1

您应该添加else if($result === 'sudah absen')以严格检查结果。