0
我正在編寫一個使用php/MySQL的應用程序。我得到一個場景,我需要更新記錄,如果它存在,但如果它不存在,然後插入一條新記錄。如何檢測在MySQL和php中是否修改了記錄
請注意,我不能添加唯一索引,所以我不能使用REPLACE或INSERT INTO ... ON DUPLICATE KEY UPDATE。我也不知道我正在更新的記錄的主鍵。
這是我的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由於某種原因,它是否做了修改記錄或沒有,這就是爲什麼insert語句被忽略。
我正在使用PDO連接到數據庫而不是mysqli。
如何編寫一個查詢來檢查現有記錄,如果存在則更新它,否則會插入它?
感謝
我正在使用PDO連接到數據庫,而不是mysqli – Jaylen
更新了答案 – topher
啊哈!這就對了。非常感謝你。我討厭容易的問題成爲挑戰! – Jaylen