2013-11-20 3 views
0

나는 php/MySQL을 사용하여 응용 프로그램을 코딩하고 있습니다. 시나리오가 존재하는 경우 레코드를 업데이트해야하지만 시나리오가 존재하지 않으면 새 레코드를 삽입해야합니다.MySQL 및 PHP에서 레코드가 수정되었는지 검색하는 방법

고유 인덱스를 추가 할 수 없으므로 REPLACE 또는 INSERT INTO ... DUPLICATE KEY UPDATE를 사용할 수 없습니다. 또한 업데이트하려고하는 레코드의 기본 키를 알지 못합니다.

UPDATE surveys_answers_controller               
SET controller_id = $field['answer'] 
WHERE group_id = $group_id AND question_id = $field['question_id'] 

참고도 GROUP_ID 나의 업데이트 진술도이 테이블에 기본 키하지만 외래 키가 question_id 있습니다.

$ db-> lastInsertId()를 사용하려고했지만 항상 레코드를 업데이트하는지 여부를 1 회 반환합니다. 왜 그런지 모르겠다!

이 나는 ​​그것이 기록 여부를 수정했다 여부를

$update_answer = $db->processQuery('UPDATE surveys_answers_controller 
SET controller_id = ? 
WHERE group_id = ? AND question_id = ? ', 
array($field['answer'], $group_id, $field['question_id'])); 

$last_id = $db->lastInsertId(); 
if(empty($last_id)){ 
$update_answer = $db->processQuery('INSERT INTO surveys_answers_controller(controller_id, group_id, question_id)VALUES(?,?,?)', 
array($field['answer'], $group_id, $field['question_id']));   
} 

$ last_id 항상 어떤 이유로 1을 반환하고 삽입 문이 무시되는 이유가 시도 것입니다.

mysqli가 아닌 데이터베이스에 연결하기 위해 PDO를 사용하고 있습니다.

기존 레코드를 확인하는 쿼리를 작성하고, 존재하는 레코드가 있으면 레코드를 업데이트하는 방법은 무엇입니까?

감사

답변

0

사용 PDOStatement::rowCount() 대신 $db->lastInsertId. 마지막 갱신/삽입/삭제의 영향을받는 행 수를 찾습니다. 0이면 삽입을하십시오.

+0

나는 mysqli가 아닌 데이터베이스에 연결하기 위해 PDO를 사용하고있다 – Jaylen

+0

답변을 – topher

+0

Aha! 그게 다야. 고맙습니다. 쉬운 문제로 도전하는 것이 싫어! – Jaylen

관련 문제