我正试图创建一个表,根据日期和用户ID记录步骤。但是,当我运行代码时,如果用户每天记录步骤几次,就会出现重复的行。我不能用唯一键指定日期,因为如果有其他用户在同一天记录了步骤,则会导致所有其他用户无法记录步骤。所以我的观点是,我想去掉在用户id和日期相同的地方有重复行的选项。我有两张桌子表A和表B,我将它们称为某物。A和某物。B使用$entry = "SELECT * FROM table.a WHERE userid.a = '$user_id.b' AND date=NOW()"时返回有效行有问题我想用它作为一个条件来决定是UPDATE还是INSERT INTO表。a.我从以前的查询中得到了user_id.b的结果,现在就这样。以下是我查询数据库的方法:$entry_result = mysqli_query($conn, $entry);这里使用的是:if (mysqli_num_rows($entry_result) > 0){ $conn->query("UPDATE steplogger SET steps='$steps' WHERE userid='$user_id' AND date=NOW()");} else { $conn->query("UPDATE users SET totalsteps = totalsteps + ('$steps') WHERE username = '$user'"); $conn->query("INSERT INTO steplogger (steps, userid, date) VALUES ('$steps', '$user_id', NOW())");}你觉得我做错了什么?另外,当我得到一个mysqli对象时。 最佳答案 正如你所说:我想删除在用户id和日期处有重复行的选项最好的方法是在user_id和date上创建一个唯一的索引,这样就不能插入两行具有相同user_id和date的行。使用一个唯一的索引,你可以使用INSERT...ON DUPLICATE KEY UPDATE来做你想做的事情:你将插入一个新行(new +cc>),如果一行已经存在同一个user_id和date,你将更新行。以下是文档:https://dev.mysql.com/doc/refman/8.0/en/insert-on-duplicate.html关于php - 选择date = NOW()的行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52990762/
10-11 03:09