是否可以使用Javascript更新SQL数据库中的数据?

时间:2015-05-21 00:52:59

标签: javascript php jquery sql ajax

我开始用javascript学习一些SQL,我想把我的变量("来自javascript"的Val_Points)放到一个表(" Usuarios")中用户(例如:罗伯特)。它是通过Javascript或其他一些方法提供的吗?



var Val_Points = 0; /* Variable */
$('.btn').click(function() {
  Val_Points += 5; /* value +5 */
  /* Update individual SQL Data
  var UpdateSQL = dbConn.executeUpdate('UPDATE Usuarios SET Points="$Val_Points" WHERE Username="$_SESSION[username]"'); 
*/
  $('#exp_bar').val(Val_Points);
});

<?php
	session_start();
	require 'connect.php';
$username_session = $_SESSION['username']; /* "Robert" Session */
$query = "SELECT * FROM `Usuarios` WHERE usuario='$username_session'";
$result = mysqli_query($connection, $query);
?>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>Points</p>
<progress id ="exp_bar" value="0" max="100"></progress><br>
<button class="btn">+1</button>
&#13;
&#13;
&#13;

此外,我正在看一个简化此https://hiddentao.github.io/squel/的脚本。在编写脚本时可能更具可读性。有什么帮助吗?

修改

我尝试通过$ _SESSION

使用php完成所有这些操作

&#13;
&#13;
<?php
session_start();
require 'connect.php';
$username_session = $_SESSION['username'];
$query = "SELECT * FROM `Usuarios` WHERE username='$username_session'";
$result = mysqli_query($connection, $query);

if(empty($_SESSION['Val_Points'])){

    $Val_Points_Session = $_SESSION['Val_Points'] = 0; 
}


 echo "<form action='' method='POST'>
   <progress id ='exp_bar' value='".$_SESSION['Val_Points']++."' max='100'></progress>
   <input class='btn' type='submit'  value='Increase val' /> 
 </form>";

 echo $_SESSION['Val_Points']; /* Show current variable */
$Update_SQL = "UPDATE Usuarios SET Points='$Val_Points_Session' WHERE username='$username_session'";

?>
&#13;
&#13;
&#13;

但它没有更新表格,表格保持相同的值

用户名点数 罗伯特0

2 个答案:

答案 0 :(得分:3)

是否可以使用Javascript将数据插入SQL数据库

简单的答案是否定的。使用Javascript 只是

要了解这一点,您需要了解client-sideserver-side之间的区别。

<强>客户端

客户端执行的操作。操作由用户的计算机/软件完成。这也意味着客户可以根据自己的需要修改数据。

服务器侧

服务器执行的操作。操作在服务器上进行,仅使用客户端发送的信息。收到数据后,客户端无法对其进行修改。

enter image description here

您的数据库位于服务器上的server-side。客户端无法直接访问此数据库,因此您需要将数据从client-side发送到server-side。这可以使用javascript完成。

所以如何做到这一点。

在您的情况下,您想将Javascript(客户端)与PHP(服务器)组合在一起。通过PHP我们将数据插入您的SQL数据库。

enter image description here

示例

Javascript / Jquery(!)

我们将使用$.ajax()。这是jQuery框架中的一个函数,并向您的服务器发出请求。

$('.btn').click(function() {
    var request = $.ajax({
        url: "phpfile.php",
        data: { label: "value" },
        method: "POST"
    });

    request.done(function() {
        // Do something after its done.
    });
 });

PHP

<?php

    if ($_SERVER['REQUEST_METHOD'] === 'POST') {
      // do your database stuff.
      // the data you send from the client is in the $_POST array.
      // for example $_POST['label']
    }

?>

答案 1 :(得分:0)

“标准”方法

foo.php是包含按钮并包含脚本的网站:

<button id="update-btn">update</button>
...
<script src="foo.js"></script>

foo.js添加了点击处理程序:

$('#update-btn').click(function() {
    $.ajax({
        'url': 'fooHandler.php',
        'method': 'POST',
        'data': {'sid': ..., 'action': 'update', 'value': ...}
        /* 'success': function(data) { ... } */
        /* 'error': function ... */
    });
});

fooHandler.php处理来自客户端的对服务器的请求:

<?php
  if (isset($_POST['sid'], $_POST['action'])) {
    /* TODO check if valid session */
    if ($_POST['action'] == 'update') {
      /* check if the rest is in order */
      if (isset($_POST['value'] and is_numeric($_POST['value'])) {
        /* TODO execute query */
      }
    } elseif ($_POST['action'] == ...) {
      ...
    }
  }
?>