如何使用Ajax和PHP将表单数据输入数据库

如何使用Ajax和PHP将表单数据输入数据库,php,jquery,ajax,mysqli,Php,Jquery,Ajax,Mysqli,我想使用ajax获取表单数据,然后将其提交到我的php页面,然后将其插入到我的数据库中。成功插入时,我想显示“您已成功注册”,失败时显示“注册失败”,如果您已经是会员,我想显示“已经是会员,请登录” 由于某些原因,我的ajax代码没有像我预期的那样工作。它跳到了最后一部分(else语句,甚至不关心if语句)。我的php代码是正确的。因为我已经单独测试过了,效果很好 有人能给我建议一个解决方案或另一种方法来完成这项任务吗?请记住,我不想进入另一页。 以下是我的JavaScript/jQuery代码

我想使用ajax获取表单数据,然后将其提交到我的php页面,然后将其插入到我的数据库中。成功插入时,我想显示“您已成功注册”,失败时显示“注册失败”,如果您已经是会员,我想显示“已经是会员,请登录”

由于某些原因,我的ajax代码没有像我预期的那样工作。它跳到了最后一部分(else语句,甚至不关心if语句)。我的php代码是正确的。因为我已经单独测试过了,效果很好

有人能给我建议一个解决方案或另一种方法来完成这项任务吗?请记住,我不想进入另一页。

以下是我的JavaScript/jQuery代码:

$(document).ready(function){
    //Signup Js
    $("#Register").click(function(){ //#Register is my submit button id
        var action = $("#sp-form").attr('action'); //#sp-form is the register form id.
        var spform_data = {
            myusername: $("#myusername").val(),
            myemail: $("#myemail").val(),
            mypassword: $("#mypassword").val() //Getting data from the input forms using their respective id's
        }

        $.ajax({
            type: "POST",
            url: action,
            data: spform_data,
            success: function(outcome)
            {
                if(outcome == "success"){
                    $("#sp-form").slideUp('slow', function(){
                        $("#message_sp").html('<p class="success">You have been registered successfully!</p><p style="color:#1c1c1c;">Redirecting....</p>');
                    });
                }
                else if(outcome == "alreadymember") {
                    $("#modal_signup").css("height","380");
                    $("#message_sp").html('<p class="error">ERROR: Email match found,Just Sign in.</p>');
                }
                else if(outcome == "failed"){
                    $("#modal_signup").css("height","380");
                    $("#message_sp").html('<p class="error">ERROR:  Failed to Register</p>');
                }
                else{
                    $("#modal_signup").css("height","380");
                    $("#message_sp").html('<p class="error">ERROR:  Unknown   ERROR</p>');
                }                
            }            
        });
        return false;
    });
});
$(文档).ready(函数){
//注册Js
$(“#注册”)。单击(函数(){/#注册是我的提交按钮id
var action=$(“#sp form”)。attr('action');/#sp form是注册表表单id。
变量spform_数据={
myusername:$(“#myusername”).val(),
myemail:$(“#myemail”).val(),
mypassword:$(“#mypassword”).val()//使用输入表单各自的id从输入表单获取数据
}
$.ajax({
类型:“POST”,
url:action,
数据:SPU表格数据,
成功:功能(结果)
{
如果(结果=“成功”){
$(“#sp form”).slideUp('slow',function(){
$(“#message_sp”).html(“

您已成功注册!

); }); } 否则,如果(结果=“alreadymember”){ $(“模态注册”).css(“高度”、“380”); $(“#message_sp”).html(“

错误:找到电子邮件匹配项,请登录。

”); } 否则如果(结果=“失败”){ $(“模态注册”).css(“高度”、“380”); $(“#message_sp”).html(“

错误:注册失败”

”; } 否则{ $(“模态注册”).css(“高度”、“380”); $(“#message_sp”).html(“

错误:未知错误”

”); } } }); 返回false; }); });
这是我的PHP/MySQLi代码

<?php
if ($_POST)
{
    $host = "localhost";
    $user= "root";
    $password = " ";

    try {
        $conn = mysqli_connect($host , $user , $password) or die("unable to connect to Local Host"); //Establishing connection with the server
        $sql = mysqli_select_db($conn,'audacity') or die("unable to connect to database"); //selecting a database from the server #after connecting
    } catch (Exception $e) {
        echo $e->getMessage();
    }
    $name = mysqli_real_escape_string($conn,$_POST['myusername']);
    $mail = mysqli_real_escape_string($conn,$_POST['myemail']);
    $pass = mysqli_real_escape_string($conn,$_POST['mypassword']);

    // Query of SQL
    $Query =mysqli_query($conn,"INSERT INTO  registration (Username,Email,Password) VALUES ('$name', '$mail' , '$pass')")) //if successful outcome is true
    if($Query ==true){
        echo "success";
    }
    elseif ($Query==false) {  #if failed
        $sqlbd = "SELECT Email FROM registration WHERE Email='$mail' ";
        $result = mysqli_query($conn,$sqlbd);

        if(mysqli_num_rows($result)==1){  //possible rsn for failure
            echo "alreadymember";             
        }
        else{
            echo "failed";  //unknown reason.
        }
    }
    mysqli_close($conn);
?>

我认为您必须检查ifs语句中的num_行是否==1…您的php只需输入email,然后将num行作为else语句进行检查…您首先检查num行,然后设置if语句,或者您已经为您的email列设置了唯一性?

我认为您必须检查ifs语句中的num_行是否==1语句…您的php只需输入email,然后将num rows作为else语句进行检查…您首先检查num rows,然后设置if语句,或者设置了电子邮件列的唯一性?

我可以确认您的代码有许多错误。 我附上一份代码的更正版本;然而,我将假设(从php代码)的目标是防止多次注册;如果是这种情况,应该检查您的逻辑。您在检查之前插入了,因此检查代码永远不会运行。因此,请在尝试插入之前进行检查。整体代码似乎不太好。 我只是修正了错误,你应该在逻辑上下功夫

JQuery $(文档).ready(函数(){

$(“#sp表单”)。提交(功能(e){
返回false;
});
$(“#注册”)。单击(函数(){
var action=$(“#sp form”).attr('action');/#sp form
是登记表id。
变量spform_数据={
myusername:$(“#myusername”).val(),
myemail:$(“#myemail”).val(),
我的密码:$(“#我的密码”).val()
//使用各自的id从输入表单获取数据
}
$.ajax({
类型:“POST”,
url:action,
数据:SPU表格数据,
成功:功能(结果)
{
如果(结果指数(“成功”)>=0){
$(“#sp form”).slideUp('slow',function(){
$(“#message_sp”).html('

您已成功注册!

重定向…

); }); } else if(output.indexOf(“alreadymember”)>=0){ $(“模态注册”).css(“高度”、“380”); $(“#message_sp”).html('

错误:找到匹配的电子邮件,只需登录即可。

”; } else if(output.indexOf(“failed”)>=0){ $(“模态注册”).css(“高度”、“380”); $(“#message_sp”).html('

错误:注册失败(p>); } 否则{ $(“模态注册”).css(“高度”、“380”); $(“#message_sp”).html('

未知错误

”; } } }); 返回false; }); }); //Php $host=“localhost”; $user=“root”; $password=“”; $conn=“”; 试一试{ $conn=mysqli\u connect($host、$user、$password)或 die(“无法连接到本地主机”);//与建立连接 服务器 $sql=mysqli\u选择\u db($conn,'audacity')或死亡(“无法 连接到数据库“;//从服务器中选择数据库#之后 连接 }捕获(例外$e){ echo$e->getMessage(); } $name=mysqli\u real
            $("#sp-form").submit(function (e) {
                return false;
            });
            $("#Register").click(function () {
                var action = $("#sp-form").attr('action'); //#sp-form 
is the register form id.

                var spform_data = {
                    myusername: $("#myusername").val(),
                    myemail: $("#myemail").val(),
                    mypassword: $("#mypassword").val()         
//Getting data from the input forms using their respective id's
                }


                $.ajax({
                    type: "POST",
                    url: action,
                    data: spform_data,
                    success: function (outcome)
                    {
                        if (outcome.indexOf("success")>=0) {
                            $("#sp-form").slideUp('slow', function () {
                                $("#message_sp").html('<p 
class="success">You have been registered successfully!</p><p 
style="color:#1c1c1c;">Redirecting....</p>');
                            });
                        }
                        else if (outcome.indexOf("alreadymember")>=0) {


                            $("#modal_signup").css("height", "380");
                            $("#message_sp").html('<p 
class="error">ERROR: Email match found,Just Sign in.</p>');


                        }

                        else if (outcome.indexOf("failed")>=0) {


                            $("#modal_signup").css("height", "380");
                            $("#message_sp").html('<p 
class="error">ERROR:  Failed to Register</p>');


                        }
                        else {


                            $("#modal_signup").css("height", "380");
                            $("#message_sp").html('<p 
class="error">Unknown Error</p>');
                        }

                    }

                });
                return false;


            });
        });

// Php
 $host = "localhost";
        $user = "root";
        $password = "";
        $conn = "";
        try {
            $conn = mysqli_connect($host, $user, $password) or 
die("unable to connect to Local Host"); //Establishing connection with 
the server

            $sql = mysqli_select_db($conn, 'audacity') or die("unable 
to connect to database"); //selecting a database from the server #after 
connecting
        } catch (Exception $e) {
            echo $e->getMessage();
        }


        $name = mysqli_real_escape_string($conn, $_POST['myusername']);
        $mail = mysqli_real_escape_string($conn, $_POST['myemail']);
        $pass = mysqli_real_escape_string($conn, $_POST['mypassword']);

        // Query of SQL


        $Query = mysqli_query($conn, "INSERT INTO  registration 
(Username,Email,Password) VALUES ('$name', '$mail' , '$pass')"); //if 
successful outcome is true
        if ($Query == true) {

            echo "success";
        } elseif ($Query == false) {  #if failed
            $sqlbd = "SELECT Email FROM registration WHERE 
Email='$mail' ";
            $result = mysqli_query($conn, $sqlbd);

            if (mysqli_num_rows($result) == 1) {  //possible rsn for 
failure
                echo "alreadymember";
            } else {

                echo "failed";  //unknown reason.
            }
        }

        mysqli_close($conn);
    }