2011-01-27 101 views
0

这是我的控制器代码保存数据在表中,但是当我把超过最大长度列数据,它不会重新调整我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)) ; 
    } 

回答

0

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

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

也将更多的数据比列可以容纳将自动获得在MySQL切断,刀片实际上不会失败。您应该使用strlen来检查字符串的长度并手动进行验证。

+0

至于你说的MySQL不能给出一个错误看到这个细节的数据库错误发生 错误编号:1406 数据太长的行列“意见” 1个 INSERT INTO`trn_improve_us`(`NAME`, 'EMAIL`,`LOCATION`,`MESSAGE_TYPE`,`COMMENTS`)VALUES('sdfsdf','[email protected]','23423','1','dsflkl; fkl; sdkfl \ ndsflkl; fkl; sdkfl \ ndsflkl; FKL; sdkfl \ ndsflkl; FKL; sdkfl \ ndsflkl; FKL; sdkfldsflkl; FKL; sdkfldsflkl; FKL; sdkfldsflkl; FKL; sdkfldsflkl; FKL; sdkfldsflkl; FKL; sdkfldsflkl; FKL; sdkfldsflkl; FKL; sdkfldsflkl; FKL; sdkfldsflkl ; fkl; sdkfldsflkl; fkl; sdkfldsflkl; fkl; sdkfldsflkl; fkl; – Vicky 2011-01-27 11:16:04