对PHP函数的AJAX调用不会使它为我的数据库输入值

Jan*_*old 5 javascript php mysql ajax

我已经在一段代码上工作了几天但是我不知道怎么把这个值传递给我的数据库.基本上我想要实现的是,一旦用户点击"收集硬币"按钮,它就将值1传递给我的数据库.每天中午12点,"dailyfree"列被MySQL事件重置为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)
}
Run Code Online (Sandbox Code Playgroud)

按钮本身

<div class="text-right">
    <button class="btn btn-success btn-block" id="free" onclick="free(); disDelay(this)">Collect free coins</button>
</div>
Run Code Online (Sandbox Code Playgroud)

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;
Run Code Online (Sandbox Code Playgroud)

我真的希望你能帮助我找出为什么它不会将值输入我的数据库!无论如何,祝你有个美好的一天:)谢谢你的帮助和时间!

Sou*_*ose 0

查询错误。

应该是更新查询。

$db->exec('UPDATE用户SET每日免费= '.$dailyfree.' ,余额=余额+ '.$freecoins.' WHEREuserid= '.$db->quote($user['userid']));

或者,如果您想在用户记录存在时进行更新,否则插入数据,然后查看ON DUPLICATE KEY