使用JQuery将值插入mySQL

时间:2017-08-09 19:59:28

标签: php jquery mysql

我是JQuery的新手,正在开发一个项目。这个项目不应该做任何事情,它更像是一个概念证明,所以我可以学习。到目前为止,我有3个PHP文件,一个名为'connection.php',连接到我的本地mySQL数据库。另一个叫做'save_score.php',它会将值保存到我的数据库中。最后,我有我的'test.php'文件创建了一些值,并使用JQuery将它们发送到'save_score.php'以将它们插入到我的数据库中。

我遇到的问题是'connection.php'工作正常。我可以在PHP中硬编码INSERT INTO语句并将该查询发送到我的DB以插入它。所以连接没有问题。我还通过两个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>

3 个答案:

答案 0 :(得分:0)

尝试将插入查询更改为此

$store = "INSERT INTO `galleryscores` (`player_name`, `player_score`) VALUES ('".$name."', '".$score."')";

为了插入值,它们应该作为字符串传递给查询。最终,您要传递一个字符串以供执行。

  

EDITED   正如Matt所说,你应该总是尝试阻止SQL注入。以下显示了如何操作:

$query = $mysqli->prepare("INSERT INTO `galleryscores` (`player_name`, `player_score`) VALUES (?, ?)");
$query->bind_param("si", $name, $score);// 's' represents the corresponding variable type is String
$query->excecute();

bind_param documentation

答案 1 :(得分:0)

以下是PDO

应如何做到这一点
$dbh = new PDO('mysql:dbname=cs301;host=localhost', $username, $password);

$stmt = $dbh->prepare('INSERT INTO `galleryscores` (`player_name`, `player_score`) VALUES (:player_name, :player_score)');

$stmt->execute( array('player_name' => $_POST['name'], 'player_score' => $_POST['score']) );

答案 2 :(得分:0)

我们在这里。如何使用MySQLi:D - 进行错误处理

numpy.savetxt