如何检查在PHP文件中使用MySQL提交成功的数据

How to check successful data Submit using MySQL in a PHP file

本文关键字:MySQL 提交 成功 数据 文件 何检查 检查 PHP      更新时间:2023-09-26

我在PHP文件中使用MySQL命令提交表单。我可以毫无问题地插入数据。

但是,我同时也想在同一页面上显示给用户一个"Thank you message",让他/她知道数据已经注册成功。另一方面,如果出现错误,我也可以显示一个抱歉的消息。

这就是我的问题所在。我用Javascript编写了几行代码,以便在同一页面中显示消息。然而,我被我应该检查成功和失败的内容(以及如何检查)所困扰。

我把我的代码附在下面。

你能帮我说说你的想法吗?

谢谢AB

HTML表单标签:

<form id="info-form" method="POST" action="form-submit.php">

form-submit.php :

<?php   
    require("database-connect.php");
    $name = $_POST['name'];
    $email = $_POST['email'];
    $mobile = $_POST['mobile'];
    $sql = "INSERT INTO tbl_details ".
           "(name,email_id,mobile_number) ".
           "VALUES ".
           "('$name','$email','$mobile')";
    mysql_select_db('db_info');     
    $retval = mysql_query( $sql, $conn );
    if(! $retval )
    {
        die('Could not enter data: ' . mysql_error());
        return false;
    }
    echo "Entered data successfully'n";
    mysql_close($conn);
?>

submit-logic.js :

$(function () 
{
    $('form').submit(function (e) 
    {                   
        e.preventDefault();
        if(e.target === document.getElementById("info-form"))
        {
            $.ajax(
            {
                type:this.method,
                url:this.action,
                data: $('#info-form').serialize(),
                dataType: 'json',    
                success: function(response)
                {
                    console.log(response);                          
                    if(response.result == 'true') 
                    {
                        document.getElementById("thankyou_info").style.display = "inline";
                        $('#please_wait_info').hide();
                        document.getElementById("info-form").reset();
                    }                       
                    else 
                    {           
                        document.getElementById("thankyou_info").style.display = "none";
                        document.getElementById("sorry_info").style.display = "inline";
                        $('#please_wait_info').hide();  
                    }
                }
            }
        )}; 
    });
}

Per documentation: http://api.jquery.com/jquery.ajax/

dataType (default: Intelligent Guess (xml, json, script, or html))
Type: String
The type of data that you're expecting back from the server.

您显式地将其设置为json,但随后返回一个字符串。您应该返回json,就像您告诉ajax脚本所期望的那样。

<?php   
    require("database-connect.php");
    $name = mysql_real_escape_string($_POST['name']);
    $email = mysql_real_escape_string($_POST['email']);
    $mobile = mysql_real_escape_string($_POST['mobile']);
    $sql = "INSERT INTO tbl_details ".
           "(name,email_id,mobile_number) ".
           "VALUES ".
           "('$name','$email','$mobile')";
    mysql_select_db('db_info');     
    $retval = mysql_query( $sql, $conn );
    if(! $retval )
    {
        die(json_encode(array('result' => false, 'message' => 'Could not enter data: ' . mysql_error()));
    }
    echo json_encode(array('result' => true, 'message' => 'Entered data successfully'));
    mysql_close($conn);
?>

我还添加了代码来净化字符串,尽管mysql_*已被弃用,最好升级到mysqliPDO。如果不进行清理,用户可以入侵您的数据库。

尽管如此,正确返回json将确保success: function(response)中的response是一个对象,并且response.result将按预期返回,并且您可以使用response.message在您想要的地方显示消息。