我正在使用php / MySQL编写应用程序。我得到了一个场景,我需要更新记录,如果它存在但是如果它不存在则插入一条新记录。
请注意,我无法添加唯一索引,因此我无法使用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是否确实修改了一条记录,这就是为什么忽略insert语句。
我使用PDO连接到数据库而不是mysqli。
如何编写检查现有记录的查询,如果存在则更新它,否则会插入它?
由于