[英]How can i only insert into a database if two inputs doesn't already exist?
我想向完成某些任務(例如達到50級)的用戶提供“獎勵”。我還想記錄所有內容,以防萬一出問題並且管理員必須手動將其插入。
獎勵php鏈接在每個頁面上,並檢查“用戶”表中的用戶是否已達到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);
這將防止同一用戶和同一級別的第二次INSERT插入,並且會引發1062錯誤,您相信我可以輕松處理該錯誤。
在獎賞表中創建一個user_id列
檢查$ member_id是否與獎賞表中的user_id相匹配。
如果沒有匹配項,請將user_id($ member_id)存儲在獎勵表中。
// Get the user_id from the award table (Example, this code won't work)
$user_id = "SELECT user_id FROM awards WHERE user_id = $member_id";
// Check if they match
if( $member_id !== $user_id ):
// Insert into awards table
endif;
我自己找到了解決此問題的方法。 這可能是一種愚蠢的方式(或其他)(我不知道),但它確實有效
$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'];
}
$check_award_exist_query = mysqli_query ($db_conn, "SELECT * FROM awards WHERE awardusername='$member_username'");
while($row = mysqli_fetch_array($check_award_exist_query, MYSQLI_ASSOC)){
$award_username = $row['awardusername'];
$selected_award = $row['award'];
}
//Award level50
if($member_username){
if($member_level == '50'){
if($selected_award == 'level50'){
}else{
$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{}
}else{}
感謝所有花時間嘗試幫助我的人! :)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.