2012-03-29 2 views
1

私はCodeigniterとActive Recordクラスを使用してPHPで簡単なAPIを構築しています。 IPアドレスがプライマリキーとして機能するテーブルがあります。これは私の質問です。PHPでのDBエラー処理

データを挿入する機能が実行されたときにIPが存在するかどうかを確認するために、 (IPが存在しない場合)またはデータを挿入する2番目のクエリを実行します。または データを挿入し、 "重複したエントリ"または何かのエラーメッセージを解析してみます。だから私はこの1つだけのDBクエリを使用しています。

したがって、基本的にPHPの検証とMySQLの検証。どの手法がより優れているか、より高速であるか。

ありがとうございました。

+0

個人的には、私はtry/catchを使い、MySQLの重複レコードエラーメッセージを解析します。そうすれば、2つのクエリーに対して1つのクエリー( 'INSERT INTO..')しかありません(挿入されていなければ、存在するかどうかを確認してください)。 –

答えて

1

ON DUPLICATE KEY UPDATE構文の使用を検討してください。これについての詳細はhttp://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html ですが、mysqlのエラーをトリガするのは決して良い考えではないので、PHPの検証を行うよりもあなたのケースでは好ましくない場合は、

+0

私はCodeigniterのアクティブレコードクラスは残念ながらこの機能を持っていないと思います – Stefan

+1

このスレッドの最後の答えを確認してください:[http://stackoverflow.com/questions/3361490/how-would-i-use-on-duplicate-key-私のcodeigniterモデルの更新](http://stackoverflow.com/questions/3361490/how-would-i-use-on-duplicate-key-update-in-my-codeigniter-model) – erdeszt

+0

私は、それを見てみましょう、ありがとう! – Stefan