我已经在一段代码上工作了几天,但是我不知何故无法将值1传递给我的数据库。
基本上,我想要达到的目的是,一旦用户单击“收集硬币”按钮,它将把值1传递给我的数据库。每天下午12点,MySQL事件会将“dailyfree”列重置为0,因此第二天用户可以再次单击该按钮,因为数据库中的“dailyfree”值再次为0。仍然我不希望用户能够在重置数据库中的值之前单击“收集硬币”。
问题是,一旦用户单击该按钮,它将为他提供免费硬币,但是值1不会传递到数据库。单击按钮后,“dailyfree”列仍为0。有人知道为什么吗?
仅供引用:我对编码非常陌生!
这是我现在正在使用的内容。
Javascript:
function free(){
var str = "username";
var term = "searched_word";
var index = str.indexOf(term);
if (index != -1) {
var daily = 1;
$.ajax({
url:"/free?daily="+daily,
success:function(data){
try{
data = JSON.parse(data);
console.log(data);
if(data.success){
bootbox.alert("Success! You've claimed 100 free credits!");
}else{
bootbox.alert(data.error);
}
}catch(err){
bootbox.alert("Javascript error: "+err);
}
},
error:function(err){
bootbox.alert("AJAX error: "+err);
}
});
}
else {
bootbox.alert("Your username does not contain the searched_word!");}
}
function disDelay(obj){
obj.setAttribute('disabled','disabled');
setTimeout(function(){obj.removeAttribute('disabled')},86400)
}
按钮本身
<div class="text-right">
<button class="btn btn-success btn-block" id="free" onclick="free(); disDelay(this)">Collect free coins</button>
</div>
的PHP
$freecoins = 100;
case 'free':
if(!$user)
exit(json_encode(array('success'=>false, 'error'=>'You must login to access the redeem.')));
$daily = 1;
if(!preg_match('/^[a-zA-Z0-9]+$/', $daily)) {
exit(json_encode(array('success'=>false, 'error'=>'Code is not valid')));
} else {
$sql = $db->query('SELECT * FROM `users` WHERE `dailyfree` = '.$db->quote($dailyfree));
if($sql->rowCount() != 0) {
$row = $sql->fetch();
if($row['user'] == $user['userid'])
exit(json_encode(array('success'=>false, 'error'=>'You have already redeemed your daily reward!')));
$db->exec('INSERT INTO `users` SET `dailyfree` = '.$dailyfree.' , `balance` = `balance` + '.$freecoins.' WHERE `userid` = '.$db->quote($user['userid']));
exit(json_encode(array('success'=>true, 'credits'=>$freecoins)));
} else {
exit(json_encode(array('success'=>false, 'error'=>'Code not found')));
}
}
break;
我真的希望您能帮助我找出为什么它不会将值输入到我的数据库中!无论如何,祝您有个美好的一天:)感谢您的帮助和时间!
最佳答案
查询是错误的。
应该是一个更新查询。$db->exec('UPDATE
用户SET
每日免费= '.$dailyfree.' ,
余额=
余额+ '.$freecoins.' WHERE
用户ID = '.$db->quote($user['userid']));
或者,如果您要在存在用户记录时进行更新,否则请插入数据,然后查看ON DUPLICATE KEY