我试图将数据提交到我在数据库中创建的表中。
为了理智起见,我把它叫做“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; ?>