Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在数据库中存储JavaScript变量_Javascript_Html_Mysql_Ajax - Fatal编程技术网

如何在数据库中存储JavaScript变量

如何在数据库中存储JavaScript变量,javascript,html,mysql,ajax,Javascript,Html,Mysql,Ajax,我想将值“totalscore”从JavaScript代码存储到数据库中。我尝试使用ajax调用,但有些东西不起作用,我以前没有使用过ajax 在下面的JavaScript代码中,我将显示我在html元素中找到的score值 JavaScript代码: if (matches==8){ var totalscore = calcScore(); document.getElementById("score").innerHTML=totalsc

我想将值“totalscore”从JavaScript代码存储到数据库中。我尝试使用ajax调用,但有些东西不起作用,我以前没有使用过ajax

在下面的JavaScript代码中,我将显示我在html元素中找到的score值

JavaScript代码:

  if (matches==8){
            var totalscore = calcScore();
            document.getElementById("score").innerHTML=totalscore;
          }
我想在单击提交按钮时将totalscore的值保存在我的用户数据库中。所以我尝试了以下方法:

   $("#sendscore").on("click",function(){

   gamescore= document.getElementById('score').innerHTML;
   $.ajax({
   type:'POST',
   url: 'score-processor.php',
   data:{
      gamescore: gamescore,
    }
   })
  });
php代码:

<?php
  session_start();
  $db = mysqli_connect('localhost', 'root', '', 'registration');
  if (isset($_POST['login_user'])) {
  $username = mysqli_real_escape_string($db, $_POST['username']);
  $password = mysqli_real_escape_string($db, $_POST['password_1']);

  if (empty($username)) {
   array_push($errors, "Username is required");
  }
  if (empty($password)) {
   array_push($errors, "Password is required");
  }

  if (count($errors) == 0) {
    $password = md5($password);
    $query = "SELECT * FROM users WHERE username='$username' AND password='$password'";
    $results = mysqli_query($db, $query);
    if (mysqli_num_rows($results) == 1) {
    $_SESSION['username'] = $username;
     header('location: profile.php');
    }
    else {
    array_push($errors, "Wrong username/password combination");
   }
 }
}
   if(isset($_POST['gamescore'])){
   $fetch = "SELECT id FROM users WHERE username='$username'";
   $fetchid =mysqli_query($db, $fetch);
   while ($row=mysqli_fetch_array($fetchid)){
   $id = $row['id'];
   $gamescore= $_POST['gamescore'];
   $updatescore= "INSERT INTO users(id, score)VALUES('$id','$gamescore') ON DUPLICATE KEY UPDATE score='$gamescore'";
   mysqli_query($db, $updatescore);
   }
   }
问题1
这是一个HTML元素,不是它的值

您需要阅读
.innerHTML
,就像您之前写的一样


问题2 ajax没有
gamescore
选项。所以这是毫无意义的

您需要传递
数据

data: {
    gamescore: gamescore
}

问题3 当您传递
FormData
对象以生成多部分请求(这对于上载文件很有用)时,这将停止jQuery重写内容类型

您没有这样做,因此
contentType:false
中断正常分配的正确内容类型标题

去掉那个


问题4 您需要处理数据。传递给
数据的对象需要编码到HTML请求中

去掉那个


问题5
您未能定义
$username
$id

危险:您容易受到需要从中获取的信息的攻击。Post数据应存储在ajax选项的数据属性中。它没有gamescore属性。修复Sql注入漏洞后。。。您尚未在更新脚本中的任何位置定义$id和$username变量。查询将因此失败。请参阅其他post寻址AJAX调用,了解有关如何防止SQL注入攻击的更多信息。我做了您建议的更改并编辑了上面的代码,但仍然存在相同的问题,我无法将分数添加到表中。$username和$id已经存在于表中,所以我定义了一些类似于我在上面代码中给出的东西。你能告诉我哪里出错了吗。你的解释很清楚,谢谢。@vigneshu-你认为
$\u POST['username']
$\u POST['id']
来自哪里?它们不在您的Ajax
数据中。感谢您的解释,您可以帮助我使用用户名和id将分数数据保存到现有表中。我已经有用户名和id,我如何链接它以更新此分数数据“我已经有用户名和id”-看起来不像。我在另一个php文件中获取用户名和id,用于登录和注册系统
gamescore= document.getElementById('score');
gamescore: gamescore
data: {
    gamescore: gamescore
}
contentType: false,
processData: false
  $updatescore= "UPDATE users SET(username='$username', score='$gamescore') WHERE (id='$id')";