【问题标题】:AJAX form not inserting values into SQL DBAJAX 表单未将值插入 SQL DB
【发布时间】:2016-09-03 11:02:51
【问题描述】:

我正在尝试合并此代码,以便在提供用户详细信息后注册用户。所有细节都将被插入到数据库中,然后加载新页面,所有这些都使用 AJAX 完成。

帮助保持上下文。所有页面都加载在 index.php 中的#main-content div 中。它们都是通过 ajax 成功后您将在 click.js 部分中看到的相同函数加载的。 Register.php 只是在此 div 中加载的页面之一。

目前,表单加载正常,提交后,新页面会根据 ajax 函数加载。然而,没有任何东西被插入到数据库中。

免责声明:为了安全起见,我还没有设置修剪。这是在设置以防止 SQL 注入之前的功能问题。

注册.php

<script src="js/click.js"></script>

<form action="click.js" method="post">

   <label for="first_name">First Name:</label>
   <input type="text" id="first_name" name="first_name" /><br>

   <label for="last_name" >Last Name:</label>
   <input type="text" id="last_name" name="last_name" /><br>

   <label for="username">Username:</label>
   <input type="text" id="username" name="username" /><br>

   <label for="password">Password:</label>
   <input type="text" id="password" name="password" /><br>

   <label for="email">Email:</label>
   <input type="email" id="email" name="email" /><br>

   <button type="submit" id="reg-submit" name="submit">Submit</button>

</form>

点击.js

$(document).ready(function(){

  $('#reg-submit').click(function() {
     var firstName = $('#first_name').val();
     var lastName = $('#last_name').val();
     var userName = $('#username').val();
     var password = $('#password').val();
     var email = $('#email').val();
     var dataString = 'name1=' + firstName + '&lastname1=' + lastName + '&user1=' + userName + '&password1=' + password + '&email1=' + email;

     if (firstName == "" || lastName == "" || userName == "" || password == "" || email == "") {
         alert('missing some information');
     }  else {
         $.ajax({
           type: "POST",
           url: "usersubmit.php",
           data: dataString,
           cache: false,
           success: function(){
             $('#main-content').load('php/next-page.php').hide().fadeIn('slow');                
          }
        });
      };
   return false;
   });
});

数据库连接发生在 users_db.php 中。

用户提交.php

<?php 

   include 'users_db.php';

   $first1=$_POST['name1'];
   $last1=$_POST['lastname1'];
   $username1=$_POST['user1'];
   $pass1=$_POST['password1'];
   $email01=$_POST['email1']; 

   $userinfo = $conn->prepare("INSERT INTO registered_users (FirstName, LastName, Username, Password, Email) VALUES ('$first1', '$last1', '$username1'', '$pass1', '$email01')");

   $userinfo->execute();


   $conn = null;
?>

非常感谢!

如果您发现我在此表单之外可能遇到的任何其他问题,只是没有提交,请随时指出。

【问题讨论】:

  • 为什么不简单:form.serialize()
  • php 文件 ...print_r($_POST); 在该顶部,使用 firebug 或等效工具查看它显示的内容
  • 另外,$username 附近的 SQL 语句中存在语法错误。
  • 您的表单在没有 AJAX 的情况下应该可以正常工作,但可以正常发布请求。这意味着您可以在没有 JavaScript 的情况下轻松开发和测试表单部分。一旦 PHP 处理部分工作正常,您就可以合并 AJAX。这样一来,您就可以同时解决一个问题。
  • 如果您从用户输入构建查询目录,那么使用准备好的语句是没有意义的。使用 bindParam、bindValue 或将值数组传递给 execute 方法!

标签: php jquery mysql ajax database


【解决方案1】:

答案不是你准备陈述的方式:)

<?php 

   include 'users_db.php';

   $first1=$_POST['name1'];
   $last1=$_POST['lastname1'];
   $username1=$_POST['user1'];
   $pass1=$_POST['password1'];
   $email01=$_POST['email1']; 

   $userinfo = $conn->prepare("INSERT INTO registered_users (FirstName, LastName, Username, Password, Email) VALUES (?, ?, ?, ?, ?)");
   $userinfo->bind_param("sssss",$first1,$last1,$username1,$pass1,$email01);

   $userinfo->execute();

    // you shoud close the prep statement object
   $userinfo->close();
   //this is the way to kill the conn
   $conn->close();
?>

这是假设您与数据库的连接正常 :)

【讨论】:

    猜你喜欢
    • 2018-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多