2009-12-12 3 views
9

基本的に私はユニークと記されたいくつかの列を持つテーブルを持っています。CodeIgniter - SQLエラーで続行しますか?

$this->db->query("INSERT INTO `table` (`col1`, `col2`, `col3`) VALUES (`val1`, `val2`, `val3`)"); 

しょっちゅう私のスクリプトは、いずれかの列の一意性に違反する行を挿入しようとします:私はこのようなコマンドを使用してテーブルに値の束をダンプするスクリプトを持っています。しかし、データベースのエラーでスクリプトを中断させる代わりに、私は少しでもメッセージを出力し続けることをお勧めします。基本的に私はcodeigniter相当のを探しています

mysql_query("INSERT blah blah blah") or print("fail"); 

ありがとう!
マラ

+0

ああ? – Mala

答えて

19

ええ、あまりにも私にしばらく時間がかかったし、私の地獄を悩ま:

$db['default']['db_debug'] = FALSE; 

... config/database.phpに - エラーページを無効にします。

クエリが実行された後、エラーをチェックするためにこれを使用する:

if (!empty($this->db->_error_message())) { 
    echo "FAIL"; 
} 
+0

空でない場合は失敗しますか?それは私に逆らって聞こえる、あるいは私は空がどのように働くのを誤解しますか? – Mala

+0

ああ申し訳ありませんが、私はおそらくコメントする前に、全体の行を読む必要がありますハァッ;)おかげで束! – Mala

+0

私のコードは次のようになります: if(空白($ this-> db - > _ error_message()) \t echo "succeed"; else \t echo "失敗"; ページは "致命的なエラー:書き込みコンテキストでメソッドの戻り値を使用できません"というエラーが発生しました... – Mala

8

は、私はあなたがすでに解決策を持って知っているが、これは同様にこの質問を見て他の人のために有用かもしれないと思いました。

データベースがあなたのために仕事をしてみましょう:あなたはINSERT IGNOREを使用する場合

$this->db->query("INSERT IGNORE INTO `table` (`col1`, `col2`, `col3`) VALUES (`val1`, `val2`, `val3`)"); 

、重複キーエラーのようなものは、あなたのクエリがスクリプトの流れを中断することなく実行してみましょう代わりに、エラーの警告、なります。

すべてのクエリは、警告が発生したかを確認するために実行した後にあなたが、その後

SHOW WARNINGS; 

を行うことができ

。 try-catchブロックでの回答に起こったものは何でも

http://dev.mysql.com/doc/refman/5.1/en/insert.html

+0

これは実際には本当に良い答えです!私は今のように私のものを保つつもりですが、私はこれを間違いなく将来使用します。ありがとう:) – Mala

+0

ニース、私は実際にこの答えを好む。 <3 – TFennis

+0

偉大な答えをありがとう! – Iyas

関連する問題