我将模型的返回值存储在$result
:
$result = $this->absensi_m->absensi();
根据我在absensi()
函数中返回的值,$result
的值将是以下值之一:
- 假
- ' sudaah absen'(字符串)
- 1(表示成功)
然后我尝试使用echo $result;
查看$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
。
首先你不能返回:
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);
你确定这是真的吗?你确定$result=1
?
我很难相信。下面是你的代码的输出
你的函数返回true
而不是1
您应该添加else if($result === 'sudah absen')
来严格检查结果