作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想向完成某些任务(例如达到 50 级)的用户颁发“奖励”。我还想记录所有内容,以防出现问题而管理员必须手动插入它。
奖项的 php 链接在每个页面上,并检查“users”表中的用户是否已达到 50 级。一旦用户达到 50 级,它将插入用户名、奖项、时间、原因以及谁授予奖项一个名为“奖项”的表格。
但是,如果用户级别为 50,则每次用户重新加载或转到新页面时,它都会继续插入“奖励”表中。如果用户还没有获得特定奖励,我如何才能更新?
if(empty($_SESSION['user'])){
}else{
$member_id = htmlentities($_SESSION['user']['id'], ENT_QUOTES, 'UTF-8');
$db_conn = mysqli_connect("localhost", "root", "password", "a276") or die ("Could not connect to database");
$set_award_query = mysqli_query ($db_conn, "SELECT * FROM users WHERE id='$member_id'");
while($row = mysqli_fetch_array($set_award_query, MYSQLI_ASSOC)){
$member_id = htmlentities($_SESSION['user']['id'], ENT_QUOTES, 'UTF-8');
$member_username = htmlentities($_SESSION['user']['username'], ENT_QUOTES, 'UTF-8');
$member_level = $row['level'];
}
//Award level50
if($member_level == '50'){
$award_sql = "INSERT INTO `awards` (`awardusername`, `awardby`, `award`, `awardmessage`) VALUES ('$member_username', 'System', 'level50', 'Congratulations on reaching level 50!')";
$db_conn->query($award_sql);
}else{}
最佳答案
您可以在 awardusername
和 award
列上创建 UNIQUE INDEX
:
ALTER TABLE `awards` ADD UNIQUE INDEX awards_key (awardusername, award);
这将阻止同一用户和级别的第二次插入,并会抛出 1062 错误,我相信您可以轻松处理该错误。
关于php - 如果两个输入尚不存在,我如何才能插入数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37969652/
我需要面对一个架构/设计决策。 我正在开发一个 Cordova/Meteor 应用程序,它具有独特的入门体验。新用户会看到一个向导,引导他们完成填写某些表单的步骤。 向导流程会等到最后一步才能注册用户
我想通过 psql 在空数据库中加载一些 SQL 函数: psql -d my_database -f fuctions.sql --set ON_ERROR_STOP=1 我使用 --set ON_
我是一名优秀的程序员,十分优秀!