gpt4 book ai didi

php - 选择 date=NOW()?

转载 作者:搜寻专家 更新时间:2023-10-30 22:06:11 25 4
gpt4 key购买 nike

我正在尝试创建一个根据日期和用户 ID 记录步骤的表。但是当我运行我的代码时,如果用户每天多次记录他们的步骤,我会碰巧得到重复的行。我不能用唯一键指定日期,因为如果其他用户在同一天记录了步数,那会导致所有其他用户无法记录步数。所以我的观点是,我想删除具有用户 ID 和日期相同的重复行的选项。我有两张 table

表a和表b,我将它们称为something.a和something.b

在使用 $entry = "SELECT * FROM table.a WHERE userid.a = '$user_id.b' AND date=NOW()"

我想用它作为决定 UPDATEINSERT INTO table.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())");
}

对我做错了什么有什么想法吗?

附言。当我 echo $entry_result 时,我得到一个 mysqli 对象。

最佳答案

正如你所说:

I want to remove the option of having duplicate rows where user id and date

最好的方法是在 user_iddate 上创建一个 UNIQUE 索引,这样你就不能插入具有相同 user_id< 的两行日期

使用 UNIQUE 索引,您可以使用 INSERT...ON DUPLICATE KEY UPDATE 这将执行您想要的操作:您将插入一个新行(新 user_id + date),如果已存在具有相同 user_iddate 的行,您将更新该行。

这是文档:https://dev.mysql.com/doc/refman/8.0/en/insert-on-duplicate.html

关于php - 选择 date=NOW()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52990762/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com