无法使用代码点火器捕获异常

时间:2011-01-27 08:42:43

标签: php codeigniter

这是我的控制器代码,它将数据保存在表中但是当我输入超过最大长度的列数据时,它不会重新调用我的STATUS false;一切都没有发生。请帮忙

function saveImproveUs(){   

        $status =array("STATUS"=>"false");

        try{
            $improveUs = array(
                'NAME' => trim($this->input->post('name')),
                'EMAIL' => trim($this->input->post('email')),
                'LOCATION' =>  trim($this->input->post('location')),
                'MESSAGE_TYPE' => trim($this->input->post('messageType')),
                'COMMENTS' => trim($this->input->post('comments'))
            );
            // Save improve us 
            $this->db->insert('trn_improve_us', $improveUs);

            if ($this->db->affected_rows() > 0){
                $status = array("STATUS"=>"true");
            }

        }catch(Exception $ex)        {
            //show_error($ex);
            echo "I am in exception";
            exit;
        }
        echo json_encode (array($status)) ; 
    }

1 个答案:

答案 0 :(得分:0)

你必须抛出异常,它不会为你做这件事。

if ($this->db->affected_rows() > 0){
    $status = array("STATUS"=>"true");
}
else {
    throw new Exception("Could not insert data");
}

同样插入比列更多的数据可以自动在MySQL中切断,插入实际上不会失败。您应该使用strlen来检查字符串的长度并手动验证它。