说明:
我有一个处理我网站中的联系表单变量的函数。
然后我添加了一个代码部分,它将变量分别保存在SQL表中。
我使用phpMyAdmin创建了表'wp_contact_form'。
在函数中使用了此代码部分:
global $wpdb;
$wpdb->insert(
'wp_contact_form',
array(
'con_ip' => $_COOKIE['ip'],
'con_name' => $fullname,
'con_email' => $email,
'con_text' => $message,
'con_country' => $_COOKIE['country'],
'con_reigon' => $_COOKIE['region'],
'con_city' => $_COOKIE['city'],
'con_utm_source' => $_COOKIE['utm_source'],
'con_utm_medium' => $_COOKIE['utm_medium'],
'con_utm_campain' => $_COOKIE['utm_campaign'],
'con_utm_term' => $_COOKIE['utm_term'],
'con_utm_content' => $_COOKIE['utm_content']
),
array(
'%s',
'%s',
'%s',
'%s',
'%s',
'%s',
'%s',
'%s',
'%s'
)
);
我仍然得到一张空白的桌子。 我试过这样: https://codex.wordpress.org/Class_Reference/wpdb#INSERT_rows
没有任何成功。
db结构: http://i.stack.imgur.com/kQ8oZ.png
全功能代码:
/**
Contact form using Ajax
**/
add_action('wp_ajax_nopriv_submit_contact_form', 'submit_contact_form');
// Send information from the contact form
function submit_contact_form(){
// Get the UTM variables from the 'get_the_utm_vars()' function
//$utm = get_the_utm_vars();
// If there is a $_POST['email']...
if( isset($_POST['email']) && ($_POST['validation'] == true ) ) {
// Get parameters
$email = $_POST['email']; // Gets the email of the user..
$email_to = "arik@ example.pro";
$utm_emails = array(
'tova@ example.pro',
'yonatan@ example.pro',
'arik@ example.pro',
'gal@ example.pro',
'shai@ example.pro',
'walid@ example.pro'
);
$fullname = $_POST['fullname'];
$message = $_POST['text'];
$email_subject = " example Intro: $email";
$headers = array(
'From: '. $fullname .' <'. $email .'>',
'BCC: yonatan@ example.pro',
'BCC: gal@ example.pro',
'BCC: eran@ example.pro',
'BCC: tova@ example.pro',
'BCC: walid@ example.pro',
'Content-type: text/html; charset=\"UTF-8\"; format=flowed \r\n'
);
$utm_headers = array(
'From: '. $fullname .' <'. $email .'>'
);
// Send email to YH, and if sent - do:
if ( wp_mail($email_to,$email_subject,$message,$headers) ) {
// Tells me that the mail has been sent
echo json_encode( array("result"=>"complete") );
//Add the UTM variables to the emails text
$message .= "\r\n \r\n \r\n IP: ". $_COOKIE['ip'] ."\r\n Country: ". $_COOKIE['country'] ."\r\n Region: ". $_COOKIE['region'] ."\r\n City: ". $_COOKIE['city'] ." \r\n UTM Source: ".$_COOKIE['utm_source']." \r\n UTM Medium: ".$_COOKIE['utm_medium']." \r\n UTM Campaign: ".$_COOKIE['utm_campaign']."\r\n UTM Term: ".$_COOKIE['utm_term']." \r\n UTM Content: ".$_COOKIE['utm_content']." ";
// A mail for tova with the UTM paramseters
wp_mail($utm_emails,$email_subject,$message,$utm_headers);
} else {
echo json_encode(array("result"=>"mail_error"));
var_dump($GLOBALS['phpmailer']->ErrorInfo);
}
wp_die();
}
global $wpdb;
$wpdb->insert(
'wp_contact_form',
array(
'con_ip' => $_COOKIE['ip'],
'con_name' => $fullname,
'con_email' => $email,
'con_text' => $message,
'con_country' => $_COOKIE['country'],
'con_reigon' => $_COOKIE['region'],
'con_city' => $_COOKIE['city'],
'con_utm_source' => $_COOKIE['utm_source'],
'con_utm_medium' => $_COOKIE['utm_medium'],
'con_utm_campain' => $_COOKIE['utm_campaign'],
'con_utm_term' => $_COOKIE['utm_term'],
'con_utm_content' => $_COOKIE['utm_content']
),
array(
'%s',
'%s',
'%s',
'%s',
'%s',
'%s',
'%s',
'%s',
'%s'
)
);
}
答案 0 :(得分:2)
试试这个
global $wpdb;
$table = wp_contact_form;
$data = array(
'con_ip' => $_COOKIE['ip'],
'con_name' => $fullname,
'con_email' => $email,
'con_text' => $message,
'con_country' => $_COOKIE['country'],
'con_reigon' => $_COOKIE['region'],
'con_city' => $_COOKIE['city'],
'con_utm_source' => $_COOKIE['utm_source'],
'con_utm_medium' => $_COOKIE['utm_medium'],
'con_utm_campain' => $_COOKIE['utm_campaign'],
'con_utm_term' => $_COOKIE['utm_term'],
'con_utm_content' => $_COOKIE['utm_content']
);
$format = array(
'%s',
'%s',
'%s',
'%s',
'%s',
'%s',
'%s',
'%s',
'%s',
'%s',
'%s',
'%s'
);
$success=$wpdb->insert( $table, $data, $format );
if($success) {
echo 'success';
} else {
echo 'not success';
}
答案 1 :(得分:0)
根据我的评论,我们插入了许多字段,我们必须使用那么多%s。
但您使用的是9格式%s,并且您要插入12个值。