使用嵌套的AJAX函数将新数据插入MYSQL

时间:2016-01-31 00:42:16

标签: php jquery html mysql ajax

我正在使用JQUERY,AJAX和PHP来确定用户是否已经存在,然后2)如果用户尚不存在则添加用户。我决定尝试这种方式的方法是使用AJAX来运行确定用户是否存在的PHP脚本。如果查询返回false,则AJAX函数运行另一个 AJAX函数,该函数运行PHP脚本以添加用户。

我知道"成功:" AJAX函数的一部分可以工作,因为我最初生成的警报显示了查询的结果。问题是当我尝试将第二个AJAX功能放入"成功:"区域,以便在用户不存在时添加用户。

感觉这样必须与我的" INSERT"的查询语法有关,但看起来对我来说。我已经搜索了以下几页,以确保:

http://www.w3schools.com/sql/sql_insert.asp http://www.w3schools.com/php/php_mysql_insert.asp

不用多说,这是我的代码。

HTML

<div id="btnRegister" class="btnRegisterInitial btnRaised trans500ms" style="z-index:3;">
<input id="email" class="txtInitial txtEmail trans500ms" style="font-family:arial; font-size:18px; color:#433343;" type="email" name="" value="" placeholder="">
<input id="password" class="txtInitial txtPassword trans500ms" style="font-family:arial; font-size:18px; color:#433343;" type="password" name="" value="" placeholder="">

JQUERY / AJAX:

$("#btnRegister").click(
    function() {
        validateUserInput(); // PLACES VALUE IN INVISIBLE INPUT IF USER INPUT IS VALID
        if ($("#inputValid").val()) {
            // alert("user's input is valid. User wants to register.");
            $("#inputValid").val("");

            $.ajax({ // AJAX TO CHECK IF USER EXISTS
            url: 'UserExists.php',
            type: 'post',
            dataType: 'json',
            data: {email: $('#email').val(), password: $('#password').val()},
            success: function(data) {   

                if (data) { // IF RESULT OF QUERY HAS A VALUE (IT WILL IF EMAIL INPUT WAS FOUND IN DB)
                    alert("you exist");
                } else {
                    alert("so, you new here?");

                    $.ajax({ // AJAX TO ADD USER IF USER DOESN'T ALREADY EXIST
                        url: 'Register.php',
                        type: 'post',
                        dataType: 'json',
                        data: {email: $('#email').val(), password: $('#password').val()},
                        success: function(data) {}
                    });
                }
            }
        });

        }

});

UserExists.PHP:

<?php

  // SET DATABASE LINK AS A VARIABLE THAT CAN BE USED WHEN RUNNING QUERIES
  $link = mysqli_connect(...db stuff...);

  if (mysqli_connect_error()) { // AVOIDS ECHOING TOO MUCH SENSITIVE INFO ABOUT DATABASE ON ERROR
    die("Could not connect");
  }

  $uiemail = mysqli_real_escape_string($link, $_POST['email']); //CREATE VARIABLE RATHER THAN WORRYING ABOUT QUOTES IN QUERY
  $uipassword = mysqli_real_escape_string($link, $_POST['password']);

  // SELECT all fields FROM databasename
  $query = "SELECT * FROM users WHERE email='$uiemail'"; //SIMPLIFIES BY USING VARIABLE RATHER THAN WORRYING ABOUT STUPID QUOTES

  // CREATE ARRAY CONTAINING ALL VALUES FOR ROW MATCHING QUERY CRITERIA
  $row = mysqli_fetch_array(mysqli_query($link, $query));
  $name = $row['name'];
  $error = 'I could not find that user name';

  if($row){
  echo json_encode($name);
  } else {
    echo json_encode("");
  }


?>

Register.PHP

<?php
$link = mysqli_connect("localhost", "web205-example", "qfz!ghWHd", "web205-example");
if (mysqli_connect_error()) {
    die("Could not connect");
  }

$uiemail = mysqli_real_escape_string($link, $_POST['email']); //CREATE VARIABLE RATHER THAN WORRYING ABOUT QUOTES IN QUERY
  $uipassword = mysqli_real_escape_string($link, $_POST['password']);

// ENTERS NEW USER INTO TABLE
  $query = "INSERT INTO `users` (`email`, `password`) VALUES ($uiemail, $uipassword)";
  mysqli_query($link, $query);

?>

是的,我知道我以非传统的方式做形式的东西。这就是我想要尝试的方式。我认为问题必须在于我的AJAX或我的PHP查询。

我试图包含大部分代码。如果您需要我通过仅包含我认为重要的代码来简化,请告诉我。

谢谢!

1 个答案:

答案 0 :(得分:0)

感谢您的投入。我不是确切地确定问题是什么,但我在玩了 JQUERY / AJAX:部分(如上所示)后开始工作。以下是我所做的事情,最终让它发挥作用:

  1. 单独使用第二个AJAX函数以确保它正常工作(它有效)。
  2. 重新介绍了第一个AJAX功能。
  3. 工作第二个AJAX函数嵌回到第一个AJAX函数的“success:”中。
  4. 检查了我的所有花括号和括号。
  5. 然后它开始工作了。所以,虽然我还没有验证我的理论,但我90%肯定如果你真的要检查上面的 JQUERY / AJAX:部分,你会发现卷曲存在问题括号或括号(这可能是一个很难发现的问题)。所以我想我的教训是:如果您正在复制粘贴代码,请仔细检查括号/括号。

    所以我只想发布这个,以便任何看到这个的人知道它是如何修复的。

    感谢大家的投入。