2011-01-27 29 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 データ列の長すぎるが( 'NAME'、trn_improve_us''に行1 INSERTでのコメント " ( '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

+0

上記のようにエラーをスローする必要があります。 – fire

関連する問題