Использование JQuery AJAX и php для извлечения данных в базу данных mysql - PullRequest
2 голосов
/ 22 апреля 2019

Я пытаюсь вставить данные в свою базу данных с помощью AJAX, но не работает.Я могу проверить, что я подключен к базе данных, но когда я нажимаю, он не вставляет данные.спасибо

с функцией щелчка, я беру 2 параметра, которые я хочу вставить в свою базу данных.

$( "#q_answer1" ).click(function () {
      var q_no = $("#q_no").val(); 
      var main_no = $("#total_no").val();

      $.ajax({
         url: "server.php",
         type: "post",
         async: false,
         data: {
            "done": 1,
            "username": q_no,
            "comment": main_no

         }, 
         success: function(){
            $("#q_no").val('');
            $("#total_no").val('');
         }
      });
  });

А вот файл php, сначала подключитесь к ddbb и вставьте 2 значенияс mysql_query.

<?php
include("dbh.php");
if (isset($_POST['done'])) {
   $q_no = mysql_escape_string($_POST['username']);
   $total_no = mysql_escape_string($_POST['comment']);

   mysql_query("INSERT INTO variables(id, names) VALUES('{$q_no}', '{$total_no}')");
   exit();
}
?>

HTML выглядит так:

<div id="total_no">1</div>
<div id="q_answer1" class="btn left_b">yes</div>

Ответы [ 4 ]

1 голос
/ 22 апреля 2019

Я думаю, вам следует использовать PDO для подключения к базе данных вместо старого драйвера, который PHP больше не поддерживает.с PDO вы можете использовать подготовленные операторы для предотвращения sql инъекций

PDO учебник

filter_var () Константы

dbh.php

$servername = "localhost";
$username = "user";
$password = "pass";
$dbname = 'db';

try {

  $db = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    // set the PDO error mode to exception
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  }
  catch(PDOException $e)
  {
    exit($e->getMessage());
  }

?>

serve.php

<?php

include("dbh.php");
if (isset($_POST['done'])) {

   $q_no = filter_var($_POST['username'], FILTER_SANITIZE_STRING);
   $total_no = filter_var($_POST['comment'], FILTER_SANITIZE_STRING);

try {

  $stmt = $db->prepare("INSERT INTO variables(id, names) VALUES(?, ?)");
  $stmt->execute(array($q_no, $total_no));

  echo json_encode(["message" => "success"]); // sends success response to front-end 

} catch (\Exception $e) {
  echo json_encode(["message" => $e->getMessage() ]); // sends error response to front-end
}


}
 ?>

в вашей проверке Ajax, если данные были вставлены или нет.

$("#q_answer1").click(function() {
  var q_no = $("#q_no").val();
  var main_no = $("#total_no").val();

  $.ajax({
    url: "file.php",
    type: "post",
    async: false,
    data: {
      "done": 1,
      "username": q_no,
      "comment": main_no

    },
    success: function(data) {

      const respose = JSON.parse(data);

      if (respose.message === 'success') { // data was inserted 

        $("#q_no").val('');
        $("#total_no").val('');

      }else {
        alert(respose.message); // some error has occured
      }
    }
  });
});
0 голосов
/ 22 апреля 2019

Вы должны принять значение div, как указано ниже,

var q_no = $("#q_no").text(); 
var main_no = $("#total_no").text();

Передать данные в паре ключ-значение. После первой передачи данных значения ключа объедините другие данные с ключом & sign.

$( "#q_answer1" ).click(function () {
          var q_no = $("#q_no").val(); 
          var main_no = $("#total_no").val();

          $.ajax({
             url: "server.php",
             type: "post",
             async: false,
             data: 'done=' + 1 + '&username=' + q_no + '&comment=' + main_no,
             success: function(){
                $("#q_no").val('');
                $("#total_no").val('');
             }
          });
      });
0 голосов
/ 22 апреля 2019

Вы не можете использовать val() на div.Попробуйте использовать text(), а затем проверьте, получает ли ваше server.php эти значения.

Спасибо

0 голосов
/ 22 апреля 2019

У вас ошибка опечатки в jquery

$qAnswer1.click(function () {

Должно быть

$('#q_answer1').click(function () {

Вы можете попробовать следующие, чтобы проверить

$( "#q_answer1" ).click(function() {
  alert( "Handler for .click() called." );
});

Включите jquery в верхней части вашей страницы

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

Полный рабочий код

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="total_no">1</div>
<div id="q_answer1" class="btn left_b">yes</div>
<script type="text/javascript">
  $( "#q_answer1" ).click(function () {
    var q_no = $("#q_no").val(); 
    var main_no = $("#total_no").val();

  $.ajax({
     url: "ajax.php",
     type: "post",
     async: false,
     data: {
        "done": 1,
        "username": q_no,
        "comment": main_no

     }, 
     success: function(){
        $("#q_no").val('');
        $("#total_no").val('');
     }
  });
});
</script>

в вашем PHP-файле попробуйте напечатать $_POST, чтобы увидеть, как он работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...