【发布时间】:2018-01-17 20:54:15
【问题描述】:
我是 JQuery 的新手,正在做一个项目。这个项目不应该做任何事情,它更像是一个概念证明,所以我可以学习。到目前为止,我有 3 个 PHP 文件,一个名为“connection.php”的文件连接到我的本地 mySQL DB。另一个,称为“save_score.php”,它将值保存到我的数据库中。最后,我有我的“test.php”文件,它创建了一些值并使用 JQuery 将它们发送到“save_score.php”以将它们插入到我的数据库中。
我遇到的问题是“connection.php”工作正常。我可以在 PHP 中硬编码 INSERT INTO 语句并将该查询发送到我的数据库以插入它。所以连接没有问题。我还通过两个 echo 语句测试了 JQuery 是否实际上将值发送到“save_score.php”,并且 echo 语句发回了我的测试值:“Jeff”和“10”。但是,mySQL INSERT 语句没有努力将值和查询发送到我的数据库。
所以本质上,我在 '$store' 中的语句应该可以解决问题,但事实并非如此,我也不知道为什么。
'save_score.php':
<?php
include 'connection.php';
$name = $_POST['name'];
$score = $_POST['score'];
echo $name;
echo $score;
$store = "INSERT INTO `galleryscores` (`player_name`, `player_score`) VALUES ($name, $score)";
$mysqli->query($store);
echo "done";
?>
'connection.php':
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "cs301";
// Create connection
$mysqli = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($mysqli->connect_error) {
die("Connection failed: " . $mysqli->connect_error);
}
'test.php':
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.css">
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
<script type="text/javascript">
var you = 's';
var you_score = 10;
$.post("save_score.php", {
name: you,
score: you_score
})
.done(function(data) {
alert("Data Loaded: " + data);
});
</script>
</head>
<body>
</body>
</html>
【问题讨论】:
-
在使用变量得出 SQL 仍在工作的结论后,您是否回显了
$store? -
我刚刚做了,它给了我正确的查询:gyazo.com/a22aeb1dbe5e9cdfa5b16a88ecc9a6c2
-
SQL 出错,这就是它没有更新的原因,而且您没有看到它的错误处理。您需要用单引号引用您的字符串值(S)。一旦你有了固定的开始研究 mysqli 或 PDO 并准备好语句,因为你很容易受到攻击。
-
你的教授应该用
mysqli或PDO教你Prepared Statements@Matt 说你对SQL 注入持开放态度!!! -
@cmorrissey 我自己学这门课,没有教授!所以你们是下一个最好的人!感谢您的帮助!