Вставка данных в базу данных с использованием AJAX-php с помощью onclick - PullRequest
1 голос
/ 10 марта 2019

Я пытаюсь ajax метод вставить данные в базу данных с помощью php.Но работает только предупреждающее сообщение и данные не вставляются в базу данных

Моя форма:

<div class="contactForm">   
            <h3>Share your contact Details</h3>
            <form id=register>
              <div class="form-group">
                <input type="text" id="team" class="form-control" placeholder="Enter Team Name">
              </div>
              <div class="form-group">
                <input type="text" id="m1" class="form-control" placeholder="Member#1">
              </div>
              <div class="form-group">
                <input type="text" id="m2" class="form-control" placeholder="Member#2">
              </div>
              <div class="form-group">
                <input type="text" id="m3" class="form-control" placeholder="Member#3">
              </div>
              <div class="form-group">
                <input type="text" id="m4" class="form-control" placeholder="Member#4">
              </div>

              <div class="form-group">
                <input type="text" id="email" class="form-control" placeholder="Enter your Email ID">
              </div>

              <div class="form-group">
                 <input type="text" id="number" class="form-control" placeholder="Enter your Mobile No.">
              </div>
              <div class="form-groud">

                  <a type="submit" onclick=register() class="btn">Register</a></div>
            </form>
        </div>

функция вызова:

function register() {
var team = document.getElementById("team").value;
var m1 = document.getElementById("m1").value;
var m2 = document.getElementById("m2").value;   
var m3 = document.getElementById("m3").value;
var m4 = document.getElementById("m4").value;
var email = document.getElementById("email").value;
var number = document.getElementById("number").value;
// Returns successful data submission message when the entered information is stored in database.
var dataString = 'team=' + team + '&m1=' + m1 + '&m2=' + m2 + '&m3' + m3 + '&m4' + m4 + '&email' + email + '&number' + number;
if (team == '' || m1 == '' || m2 == '' || m3 == '' || m4 == '' || email == '' || number == '') {
    alert("Please Fill All Fields");
} else {
    // AJAX code to submit form.
    $.ajax({
        type: "POST",
        url: "workreg.php",
        data: dataString,
        cache: false,
        success: function(html) {
            alert(html);
        }
    });
}
return false;

}

а вот php:

<?php
// Fetching Values From URL
$team=$_POST['team'];
$m1=$_POST['m1'];
$m2=$_POST['m2'];
$m3=$_POST['m3'];
$m4=$_POST['m4'];
$email=$_POST['m4'];
$number=$_POST['m4'];
$connection = mysql_connect("localhost", "root", ""); // Establishing Connection with Server..
$db = mysql_select_db("event", $connection); // Selecting Database
if (isset($_POST['team'])) {
    $query = mysql_query("insert into workshop values ('$team', '$m1', '$m2','$m3','$m4','$email','$number')"); //Insert Query
    echo "Form Submitted succesfully";
}
mysql_close($connection); // Connection Closed

?>

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

Ответы [ 3 ]

0 голосов
/ 10 марта 2019
    $('#register').submit(event => {
        event.preventDefault();

        let team = $('#team').val();
        let m1 = $('#m1').val();
        let m2 = $('#m2').val();
        let m3 = $('#m3').val();
        let m4 = $('#m4').val();
        let email = $('#email').val();
        let number = $('#number').val();

        $.ajax({
            url: "workreg.php",
            method: "POST",
            data: { team, m1, m2, m3, m4, email, number }
                .done(data => {
                    console.log(data)
                })
                .fail(err => console.error(err))
        })
    })
0 голосов
/ 10 марта 2019

На самом деле вы проверяете только переменную записи test присутствует или нет.Вы не проверяете успешное выполнение запроса к базе данных.в текущей проверке кода после $query

if(!$query){ 
    echo "Form Submitted succesfully"
} else {
     die('Invalid query: ' . mysql_error()); // show  the error 
}

mysql устарели функции, поэтому я использую mysqli, также лучше использовать это.Никогда не доверяйте вводу пользователя, поэтому я также использую оператор подготовки. Вы всегда должны искать обновленные видео и статьи .

$connection = mysqli_connect("localhost", "root", "","event"); // Establishing Connection with Server..

if (isset($_POST['team'])) {
    $query = "insert into workshop values (?, ?, ?,?,?,?,?)"; //Never trust user's input so use prepare 
    $stmt = mysqli_prepare($connection ,$query) ;
    mysqli_stmt_bind_param($stmt,'ssssssi',$team,$m1,$m2,$m3,$m4,$email,$number) ;
    mysqli_stmt_execute($stmt);
    if( mysqli_stmt_affected_rows($stmt) === 1 ) { //it will be int 1 if one row is inserted
        echo "Form Submitted succesfully" ;
    }else {
        echo mysqli_error($connection)
    }
}

mysqli_close($connection); // Connection Closed

некоторые источники на будущее

Как я могу предотвратить внедрение SQL в PHP?

https://phpdelusions.net/pdo (речь идет о PDOно вы поймете идею.)

http://php.net/manual/en/mysqli.quickstart.prepared-statements.php

0 голосов
/ 10 марта 2019

Контент-тип отсутствует в вашем почтовом запросе. Я работал только с PostgreSQL, но Content-Type был необходим для правильной работы почтовых запросов в моем случае, возможно, вам следует это проверить. Также проверьте, установлен ли режим автоматической отправки в базу данных при подключении или данные не будут добавлены в базу данных.

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