我开始用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;
此外,我正在看一个简化此https://hiddentao.github.io/squel/的脚本。在编写脚本时可能更具可读性。有什么帮助吗?
修改
我尝试通过$ _SESSION
使用php完成所有这些操作
<?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;
但它没有更新表格,表格保持相同的值
用户名点数 罗伯特0
答案 0 :(得分:3)
是否可以使用Javascript将数据插入SQL数据库
简单的答案是否定的。使用Javascript 只是。
要了解这一点,您需要了解client-side
和server-side
之间的区别。
<强>客户端强>
客户端执行的操作。操作由用户的计算机/软件完成。这也意味着客户可以根据自己的需要修改数据。
服务器侧强>
服务器执行的操作。操作在服务器上进行,仅使用客户端发送的信息。收到数据后,客户端无法对其进行修改。
您的数据库位于服务器上的server-side
。客户端无法直接访问此数据库,因此您需要将数据从client-side
发送到server-side
。这可以使用javascript
完成。
所以如何做到这一点。
在您的情况下,您想将Javascript
(客户端)与PHP
(服务器)组合在一起。通过PHP
我们将数据插入您的SQL
数据库。
示例强>
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'] == ...) {
...
}
}
?>