我将模型中的返回值存储在$result
:
$result = $this->absensi_m->absensi();
根据我在absensi()
函数中返回的内容,$result
的值将是其中之一:
然后我尝试使用$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
。
答案 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')
以严格检查结果。