【问题标题】:Inserting data into database using AJAX-php using onclick使用 onclick 使用 AJAX-php 将数据插入数据库
【发布时间】:2019-03-10 08:38:19
【问题描述】:

我正在尝试 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

?>

当我点击注册时,它只是显示警报消息,但我检查了数据库没有插入任何值

【问题讨论】:

  • 请不要使用mysql_(已弃用)尝试mysqli_pdo 并检查$query 是否返回True 或False。如果它返回 False 检查mysql_error()
  • 试过mysqli还是一样
  • $query 的值是什么,请参阅Example
  • 请问你是怎么学PHP的?
  • youtube 上的教程

标签: php html ajax database


【解决方案1】:

实际上,您只是在检查 post 变量 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

一些未来的资源

How can I prevent SQL injection in PHP?

https://phpdelusions.net/pdo(这是关于 PDO 但你会明白的。)

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

【讨论】:

    【解决方案2】:

    您的发布请求中缺少 Content-Type。我只使用 PostgreSQL,但在我的情况下,内容类型对于发布请求正常工作来说有点必要,也许你应该检查一下。 还要检查您是否设置为在连接时自动提交到数据库,否则数据不会添加到数据库中。

    【讨论】:

      【解决方案3】:
          $('#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))
              })
          })
      

      【讨论】:

        猜你喜欢
        • 2017-04-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多