Ajax PHP没有插入MySQL数据库

时间:2016-10-23 01:46:19

标签: javascript php jquery mysql ajax

我使用Ajax从表单中获取POST值。但是,当我尝试在提交时在数据库中插入表单值时,它不会被插入。我仍然不知道它为什么不起作用。

这是我的HTML

<form method="post" action="" id="home-sign-up-form">
    <input type="text" name="suFirstName" placeholder="First Name" class="text-input-minor" id="sign-up-first-name-text-input">
    <input type="text" name="suLastName" placeholder="Last Name" class="text-input-minor" id="sign-up-last-name-text-input">
    <input type="text" name="suEmail" placeholder="Email" class="text-input-minor" id="sign-up-email-text-input">
    <input type="password" name="suPassword" placeholder="Password" class="text-input-minor" id="sign-up-password-text-input">
    <input type="password" name="suConfirmPassword" placeholder="Confirm Password" class="text-input-minor" id="sign-up-confirm-password-text-input">
    <input type="text" name="suDisplayName" placeholder="Display Name (you can change this later)" class="text-input-minor" id="sign-up-display-name-text-input">
    <br><font class="text-error" id="sign-up-error-text"></font><br>
    <label><input type="checkbox" name="suRememberMe" value="yes" id="sign-up-remember-me-checkbox"><font id="sign-up-remember-me-text">Remember me</font></label>
    <input name="signUp" type="submit" value="Sign Up" id="sign-up-submit">
</form>

我的JS(console.log确实可以运行):

if (validForm)
{
    console.log("valid form");
    $.ajax(
    {
        type:'POST',
        url:'form-submit.php',
        data:$('#home-sign-up-form').serialize(),
        success:function(response)
        {
            $suForm.hide();
            $tosppText.hide();
            $mailSentIcon.show();
            $emailSentText.show();
            $emailSentTextEmail.text($suEmail);
            $suBox.css("padding-left", "10px");
            $suBox.css("padding-right", "10px");
        }
    });     
}

我的PHP / MySQL:

if (isset($_POST['signUp']))
{
    echo "<script type='text/javascript'>alert('got');</script>";
    $suFirstName = mysqli_real_escape_string($_POST['suFirstName']); 
    $suLastName = mysqli_real_escape_string($_POST['suLastName']); 
    $suEmail = mysqli_real_escape_string($_POST['suEmail']); 
    $suPassword = mysqli_real_escape_string($_POST['suPassword']);
    $suDisplayName = mysqli_real_escape_string($_POST['suDisplayName']);
    $code = substr(md5(mt_rand()),0,15);

    $query = $connection->query("INSERT INTO users (firstName,lastName,email,password,displayName,confirmCode,verified)Values('{$suFirstName}','{$suLastName}','{$suEmail}','{$suPassword}','{$suDisplayName}','{$confirmCode},'{$verified}')");
}

PHP代码中的提醒,因此我认为它没有获得“注册”功能。 POST变量。非常感谢!任何帮助表示赞赏! :d

2 个答案:

答案 0 :(得分:0)

单击按钮后,您将获得signUp post变量。如果您通过ajax调用发布,则按钮变量将不可用作$ _POST变量。请检查任何其他输入值。

另一个选项是有和隐藏输入将其设置为某个值。并在服务器端检查它。但最好还是检查任何正常的表格输入而不是额外的输入控制。

答案 1 :(得分:0)

$mysqli = new mysqli("localhost", "root", "", "test");

if (isset($_POST['signUp'])){
    echo "<script type='text/javascript'>alert('got');</script>";
    echo $suFirstName = mysqli_real_escape_string($mysqli,$_POST['suFirstName']); 
    echo $suPassword = mysqli_real_escape_string($mysqli,$_POST['suPassword']);
    $sql="INSERT INTO users (`username`, `password`) VALUES ('$suFirstName', '$suPassword')";
}

if (!mysqli_query($mysqli,$sql)) {
    die('Error: ' . mysqli_error($mysqli ));
}

echo "1 record added";

mysqli_real_escape_string需要连接和字符串两个参数。

您可以阅读更多内容:https://www.w3schools.com/php/func_mysqli_real_escape_string.asp