2017-10-26 5 views
1

저는 이틀 동안이 문제를 조사해 왔으며, 저에게 맞는 작품은 없습니다. 다음과 같은 경우입니다. 사용자가 데이터를 설정합니다. 해당 행이있는 경우 user_id(Primary Key) 행이 업데이트됩니다 (행이 삽입되지 않은 경우). 지금까지는 그렇게 좋았지 만 사용자가 동일한 값을 설정하면 업데이트되지 않고 삽입 쿼리가 실행되었습니다. 이는 이미 user_id에 대한 행이 있기 때문에 오류가 표시됩니다. 그래서 값이 같고 삽입을 실행하지 않아 행이 업데이트되지 않았 음을 어떻게 감지합니까?PHP/MySQL 같은 값으로 업데이트되지 않았는지 확인하십시오.

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

그리고 값이 동일하고 mysqli_affected_rows0을 반환 이후 얻을 :

현재 내 코드는 내가 INSERT IGNORE을 읽은

Duplicate entry 'xxxxx' for key 'PRIMARY' 

권장하지 않습니다에서, 때문에 오류가 표시되지 않으며 그러한 오류가 있는지 알아야합니다. INSERT ON DUPLICATED KEY은 매우 느리고 사용하고 싶지 않습니다. 그럼 내 옵션은 뭐니?

미리 감사드립니다.

답변

0

INSERT .. 중복 키가 느린되어 있지 않으므로 실제로

+0

감사해야 할 것입니다 ON. INSERT UPDATE에서 INSERT를 변환합니다. – Lanexbg