2017-10-26 6 views
1

私はこの問題を2日間にわたり研究しています。次の場合があります。 ユーザーがデータを設定します。その行がある場合は、user_id(Primary Key)行が更新されます(行が挿入されていない場合)。今のところ良いですが、ユーザーが同じ値を設定すると、更新されず、挿入クエリが実行されます。これは、既にuser_idという行が存在するため、エラーが表示されます。 したがって、行が更新されないのは、値が同じで挿入を実行しないために検出できますか?PHP/MySQL同じ値で更新されていないか確認してください

UPDATE %s SET %s WHERE `user_id`=%d 
if ($this->db->affected_rows() <= 0) { 
    INSERT... 
} 

と値が0同じとmysqli_affected_rowsリターンですので、私は得る::

現在、私のコードがある

Duplicate entry 'xxxxx' for key 'PRIMARY' 

私はINSERT IGNOREを読んだからそれているため、推奨されていませんエラーが表示されず、そのようなものがあるかどうかを知る必要があります。 INSERT ON DUPLICATED KEYは非常に遅く、私はそれを使用したくありません。では、私の選択肢は何ですか?

ありがとうございます。

答えて

0

INSERT .. ON DUPLICATE KEYは遅くなく、実際に必要なものです

+0

ありがとうございました。 INSERT UPDATEでINSERTを変換します。 – Lanexbg

関連する問題