我有一个查询,希望将INSERT一些数据放入表中,如果特定字段中已经有数据checkPoint,请运行UPDATE。经过大量研究后,用户建议使用ON DUPLICATE KEY。
但是,此查询的作用是更新已存在的行,它插入带有新主键的新行,请有人可以解释我哪里出错了,或者我错过了什么。
<?php
$idUsers = $_SESSION['id'];
$ModuleID = 5;
$checkPoint = 999;
$query= "INSERT INTO `userTakingModule` (`userTakingModuleID`, `idUsers`, `ModuleID`, `checkPoint`) VALUES (NULL, $idUsers, $ModuleID, $checkPoint) ON DUPLICATE KEY UPDATE `idUsers` = VALUES ($idUsers), `ModuleID` = VALUES ($ModuleID), `checkPoint` = VALUES ($checkPoint) ";
$result = $conn -> query($query);
?>
我的数据库布局的屏幕截图:userTakingModule中间调用的表是应用查询的位置。
这就是目前正在发生的事情,因为我需要以userTakingModuleID
某种方式将主键包含到查询中。(我几乎需要说,寻找那里是相同的已经存在的项目idUser
和ModuleID
?)