如何在WP数据库表中插入单行?

时间:2015-08-05 作者:Kar19

简介:

我有一个处理网站中联系人表单变量的函数。

用户输入姓名、电子邮件和文本功能。php使用javascript获取变量

我使用phpMyAdmin创建了表“wp\\u contact\\u 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

没有任何成功。

数据库结构:http://i.stack.imgur.com/kQ8oZ.pngenter image description here

全功能代码:

/**
    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\'
        ) 
    );







}

1 个回复
SO网友:Philippe

在您的代码中,如果设置并验证了电子邮件(我想这应该是正常情况),那么您的代码将在wp\\u die()处退出,并且永远不会到达$wpdb->insert。

只有在未设置电子邮件或“验证”为false时,才会访问$wpdb->insert语句。

您可能希望完全放弃wp\\u die()调用,或者根据需要将该调用放在函数的最末端。

除此之外,请尝试确定是否调用了您的函数(AJAX调用本身可能有问题)。

结束