数据库-将数据从输入提交到数据库

时间:2019-01-28 作者:Jason Is My Name

我试图将数据提交到我在数据库中创建的表中。

为了理智起见,我把它叫做“wp\\u email\\u订阅者”。包括wp\\uu前缀。

我知道有一种方法可以使用$wpdb插入数据,但我最好能够这样做,这样我就可以将此表单复制到其他没有WordPress支持的站点。所以我们希望使用更传统的连接和插入/查询数据库。

此时,我无法使用$wpdb或更经典的方法获取要提交的数据。任何人都可以看到这是哪里出了问题,因为我没有收到任何错误消息,除了$result的布尔假值。所有其他领域看起来都应该如此。

够了,下面是代码:

<style>
#sign-up-form {
    width: 100%;
    max-width: 640px;
    margin: 20px auto;
    padding: 10px;
    border-radius: 15px;
    background-color: rgba(7,30,68,1);
    text-align: center
}
    @media screen and (max-width: 767px) {
        #sign-up-form {
            width: calc(100% - 40px);
            margin: 20px;
        }
    }

    #sign-up-form span,
    #sign-up-form input {
        width: 100%;
    }

    #sign-up-form input {
        margin-top: 10px;
        font-size: 1rem;
    }

    #sign-up-form .form-title {
        font-size: 1.25rem;
    }

    #sign-up-form .form-title,
    #sign-up-form label {
        color: #ffc90f;
    }

    #sign-up-form input[name=first-name],
    #sign-up-form input[name=last-name]{
        width: calc(50% - 5px);
        float: left;
    }
    #sign-up-form input[name=first-name] {
        margin-right: 10px;
    }
        @media screen and (max-width: 767px) {
            #sign-up-form input[name=first-name],
            #sign-up-form input[name=last-name]{
                width: 100%;
            }
            #sign-up-form input[name=first-name] {
                margin-right: 0;
            }
        }

    #sign-up-form label[for=gdpr-consent]{
        font-size: 0.6rem;
    }

    #sign-up-form input[type=checkbox] {
        width: 20px;
    }

    #sign-up-form input[type=submit] {
        width: 100%;
        max-width: 210px;
        padding: 5px;
        margin: 20px auto 0;
        position: relative;

        border-radius: 15px;
        border: none;

        -webkit-transition: all .7s;
        transition: all .7s;

        background-color: #007dbe;
        color: white;
        font-size: 1.875rem;

        cursor: pointer;
        outline: 0;
    }
        #sign-up-form input[type=submit]:hover {
            background-color: #00295b;
        }

    .error {
        color: red;
    }

    .success-log {
        margin-top: 20px;
        color: #4BB543;
        font-size: 16px;
    }
</style>

<?php
    // show errors
    error_reporting(E_ALL);
    ini_set(\'display_errors\', 1);

    $servername = "****";
    $username = "****";
    $password = "****";
    $dbname = "****";

    // Create connection
    $conn = new mysqli($servername, $username, $password, $dbname);
    // Check connection
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    } 


    // define variables and set to empty values
    $firstNameErr = $lastNameErr = $emailErr = $gdprConsentErr = "";
    $firstname = $lastname = $email = $gdprconsent = "";

    if ($_SERVER["REQUEST_METHOD"] == "POST") {
        if (empty($_POST["first-name"])) {
            $firstNameErr = "First name is required";
        } else {
            $firstname = test_input($_POST["first-name"]);

            // check if name only contains letters and whitespace
            if (!preg_match("/^[a-zA-Z ]*$/",$firstname)) {
                $firstNameErr = "Only letters and white space allowed"; 
            }
        }

        if (empty($_POST["last-name"])) {
            $lastNameErr = "Last name is required";
        } else {
            $lastname = test_input($_POST["last-name"]);

            // check if name only contains letters and whitespace
            if (!preg_match("/^[a-zA-Z ]*$/",$lastname)) {
                $lastNameErr = "Only letters and white space allowed"; 
            }
        }

        if (empty($_POST["email"])) {
            $emailErr = "Email is required";
        } else {
            $email = test_input($_POST["email"]);

            // check if e-mail address is well-formed
            if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { 
                $emailErr = "Invalid email format"; 
            }
        }

        if (empty($_POST["gdpr-consent"])) {
            $gdprconsent = "You must give consent";
        } else {
            $gdprconsent = test_input($_POST["gdpr-consent"]);
        }
    }

    function test_input($data) {
        $data = trim($data);
        $data = stripslashes($data);
        $data = htmlspecialchars($data);
        return $data;
    }

    if (!empty($firstname) && !empty($lastname) && !empty($email) && !empty($gdprconsent)) {
        $sql = "INSERT INTO \'wp_email_subscribers\' (\'first_name\', \'last_name\', \'email\', \'gdpr_consent\') VALUES ($firstname, $lastname, $email, $gdprconsent)";
        $result = $conn->query($sql);
        $conn->query($sql);

        var_dump($firstname);
        var_dump($lastname);
        var_dump($email);
        var_dump($gdprconsent);
        var_dump($sql);
        var_dump($result);
    }
?>

<div class="form-title">Sign up to our newsletter!</div>

<?php if (!isset($_POST["submit"])): ?>
<form method="post" action="<?php echo htmlspecialchars($_SERVER[\'REQUEST_URI\']);?>" class="email-sub-form">
        <input type="text" name="first-name" value="<?php echo $firstname;?>" placeholder="First Name *" required>
        <input type="text" name="last-name" value="<?php echo $lastname;?>" placeholder="Last Name *" required>
        <input type="email" name="email" value="<?php echo $email;?>" placeholder="Email *" required>
        <input type="checkbox" name="gdpr-consent" id="gdpr-consent" value="1" required><label for="gdpr-consent">I consent to $$$$ using my data for marketing purposes.</label>

        <div class="error-log">
            <span class="error"><?php if (!empty($firstNameErr)) { echo $firstNameErr; }?></span>
            <span class="error"><?php if (!empty($lastNameErr)) { echo $lastNameErr; }?></span>
            <span class="error"><?php if (!empty($emailErr)) { echo $emailErr; }?></span>
            <span class="error"><?php if (!empty($gdprConsentErr)) { echo $gdprConsentErr; }?></span>
        </div>

        <input type="submit" name="submit" value="Submit">
    </form>
<?php endif; ?>

<?php if (isset($_POST["submit"])): ?>
<div class="success-log">
    <div class="success-inner">
        Thank you  for subscribing to our e-news.<br/>
        You have been added into our mail list.
    </div>
</div>
<?php endif; ?>
这是我在尝试使用$wpdb:

<style>
#sign-up-form {
    width: 100%;
    max-width: 640px;
    margin: 20px auto;
    padding: 10px;
    border-radius: 15px;
    background-color: rgba(7,30,68,1);
    text-align: center
}
    @media screen and (max-width: 767px) {
        #sign-up-form {
            width: calc(100% - 40px);
            margin: 20px;
        }
    }

    #sign-up-form span,
    #sign-up-form input {
        width: 100%;
    }

    #sign-up-form input {
        margin-top: 10px;
        font-size: 1rem;
    }

    #sign-up-form .form-title {
        font-size: 1.25rem;
    }

    #sign-up-form .form-title,
    #sign-up-form label {
        color: #ffc90f;
    }

    #sign-up-form input[name=first-name],
    #sign-up-form input[name=last-name]{
        width: calc(50% - 5px);
        float: left;
    }
    #sign-up-form input[name=first-name] {
        margin-right: 10px;
    }
        @media screen and (max-width: 767px) {
            #sign-up-form input[name=first-name],
            #sign-up-form input[name=last-name]{
                width: 100%;
            }
            #sign-up-form input[name=first-name] {
                margin-right: 0;
            }
        }

    #sign-up-form label[for=gdpr-consent]{
        font-size: 0.6rem;
    }

    #sign-up-form input[type=checkbox] {
        width: 20px;
    }

    #sign-up-form input[type=submit] {
        width: 100%;
        max-width: 210px;
        padding: 5px;
        margin: 20px auto 0;
        position: relative;

        border-radius: 15px;
        border: none;

        -webkit-transition: all .7s;
        transition: all .7s;

        background-color: #007dbe;
        color: white;
        font-size: 1.875rem;

        cursor: pointer;
        outline: 0;
    }
        #sign-up-form input[type=submit]:hover {
            background-color: #00295b;
        }

    .error {
        color: red;
    }

    .success-log {
        margin-top: 20px;
        color: #4BB543;
        font-size: 16px;
    }
</style>

<?php
    // show errors
    error_reporting(E_ALL);
    ini_set(\'display_errors\', 1);

    global $wpdb;

    /*
    $servername = "****";
    $username = "****";
    $password = "****";
    $dbname = "****";

    // Create connection
    $conn = new mysqli($servername, $username, $password, $dbname);
    // Check connection
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    } 
    */


    // define variables and set to empty values
    $firstNameErr = $lastNameErr = $emailErr = $gdprConsentErr = "";
    $firstname = $lastname = $email = $gdprconsent = "";

    if ($_SERVER["REQUEST_METHOD"] == "POST") {
        if (empty($_POST["first-name"])) {
            $firstNameErr = "First name is required";
        } else {
            $firstname = test_input($_POST["first-name"]);

            // check if name only contains letters and whitespace
            if (!preg_match("/^[a-zA-Z ]*$/",$firstname)) {
                $firstNameErr = "Only letters and white space allowed"; 
            }
        }

        if (empty($_POST["last-name"])) {
            $lastNameErr = "Last name is required";
        } else {
            $lastname = test_input($_POST["last-name"]);

            // check if name only contains letters and whitespace
            if (!preg_match("/^[a-zA-Z ]*$/",$lastname)) {
                $lastNameErr = "Only letters and white space allowed"; 
            }
        }

        if (empty($_POST["email"])) {
            $emailErr = "Email is required";
        } else {
            $email = test_input($_POST["email"]);

            // check if e-mail address is well-formed
            if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { 
                $emailErr = "Invalid email format"; 
            }
        }

        if (empty($_POST["gdpr-consent"])) {
            $gdprconsent = "You must give consent";
        } else {
            $gdprconsent = test_input($_POST["gdpr-consent"]);
        }
    }

    function test_input($data) {
        $data = trim($data);
        $data = stripslashes($data);
        $data = htmlspecialchars($data);
        return $data;
    }

    $table = \'wp_email_subscribers\';
    $data = array(
        \'first_name\' => $firstname, 
        \'last_name\' => $lastname, 
        \'email\'=> $email , 
        \'gdpr_consent\'=>$gdprconsent 
    );
    $format = array(\'%s\',\'%s\', \'%s\', \'%s\');
    $wpdb->insert($table,$data,$format);
    var_dump($wpdb->insert_id);

    /*if (!empty($firstname) && !empty($lastname) && !empty($email) && !empty($gdprconsent)) {
        $sql = "INSERT INTO `wp_email_subscribers` (`first_name`, `last_name`, `email`, `gdpr_consent`) VALUES ($firstname, $lastname, $email, $gdprconsent)";
        $result = $conn->query($sql);
        $conn->query($sql);

        var_dump($firstname);
        var_dump($lastname);
        var_dump($email);
        var_dump($gdprconsent);
        var_dump($sql);
        var_dump($result);
    }*/
?>

<div class="form-title">Sign up to our newsletter!</div>

<?php if (!isset($_POST["submit"])): ?>
<form method="post" action="<?php echo htmlspecialchars($_SERVER[\'REQUEST_URI\']);?>" class="email-sub-form">
        <input type="text" name="first-name" value="<?php echo $firstname;?>" placeholder="First Name *" required>
        <input type="text" name="last-name" value="<?php echo $lastname;?>" placeholder="Last Name *" required>
        <input type="email" name="email" value="<?php echo $email;?>" placeholder="Email *" required>
        <input type="checkbox" name="gdpr-consent" id="gdpr-consent" value="1" required><label for="gdpr-consent">I consent to $$$$ using my data for marketing purposes.</label>

        <div class="error-log">
            <span class="error"><?php if (!empty($firstNameErr)) { echo $firstNameErr; }?></span>
            <span class="error"><?php if (!empty($lastNameErr)) { echo $lastNameErr; }?></span>
            <span class="error"><?php if (!empty($emailErr)) { echo $emailErr; }?></span>
            <span class="error"><?php if (!empty($gdprConsentErr)) { echo $gdprConsentErr; }?></span>
        </div>

        <input type="submit" name="submit" value="Submit">
    </form>
<?php endif; ?>

<?php if (isset($_POST["submit"])): ?>
<div class="success-log">
    <div class="success-inner">
        Thank you <?php echo $firstname . \' \' . $lastname; ?> for subscribing to our e-news.<br/>
        You have been added into our mail list.
    </div>
</div>
<?php endif; ?>

1 个回复
SO网友:Jason Is My Name

我的数据库中有一个拼写错误,我一辈子都看不到。。。

我插入了这条方便的线路来帮助我诊断:

$wpdb->show_errors();
感谢您的耐心等待!