我对WordPress并不陌生,但这是我第一次尝试使用$wpdb。
我已经设置了一个表单:
<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">
</div>
<input type="submit" name="submit" value="Submit">
</form>
我的完整PHP如下所示:
<?php
// show errors
error_reporting(E_ALL);
ini_set(\'display_errors\', 1);
global $wpdb;
// 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);*/
?>
如果I var\\u转储单个列数据,它们似乎会收集正确的已清理数据。该值未提交到数据库。
谁能帮我清理一下,这样它就可以发布到数据库了。
谢谢,杰森。
SO网友:czerspalace
$wpdb具有insert 方法,因此您可以尝试以下操作:
$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);