Wordpress数据库INSERT无法正常工作

时间:2018-03-28 20:13:02

标签: php mysql wordpress

我要么在表中更新或插入数据,要么取决于它是否存在。更新工作正常,但插入只有一半工作。

explode输入名称有助于组织数据,所以它看起来像这样:

name="relation,type,state"

这会产生:

// relation is what I use to identify the relationship between text and url
// type will either be 'text' or 'url'
// state is a two character abbreviation ex: 'ca'
$key = array('relation','type','state');

然后我在字段上使用foreach并使用insert:

if($key[1] === 'text'){
    $wpdb->insert(
        'areas_module_text',
        array(
            'text'  => $value,
            'state'  => $key[2],
            'relation' => $key[0]
        ));
}else if($key[1] === 'url'){
    $wpdb->insert(
        'areas_module_urls',
        array(
            'url'  => $value,
            'state'  => $key[2],
            'relation' => $key[0]
        ));
}

第一个if正在运行,但第二个似乎只是因某些原因而被绕过。除了WHERE之外,代码块几乎与更新完全相同,两者都可以正常工作。这只是INSERT的第二部分。那是为什么?

这是在表单提交时执行的完整脚本:

    foreach($_POST as $key => $value){
        if($key != 'update-areas-module-submit' && $value != ''){
            $key = explode(',', $key);
            $textExists = $wpdb->get_results("SELECT * FROM areas_module_text WHERE relation = '".$key[0]."' AND state = '".$key[2]."'");
            $urlExists = $wpdb->get_results("SELECT * FROM areas_module_urls WHERE relation = '".$key[0]."' AND state = '".$key[2]."'");
            if($textExists || $urlExists){
                if($key[1] === 'text'){
                    $wpdb->update(
                        'areas_module_text',
                        array(
                            'text'  => $value,
                        ), array('relation' => $key[0], 'state' => $key[2]));
                }else if($key[1] === 'url'){
                    $wpdb->update(
                        'areas_module_urls',
                        array(
                            'url'  => $value,
                        ), array('relation' => $key[0], 'state' => $key[2]));
                }
            }else{
                if($key[1] === 'text'){
                    $wpdb->insert(
                        'areas_module_text',
                        array(
                            'text'  => $value,
                            'state'  => $key[2],
                            'relation' => $key[0]
                        ));
                }else if($key[1] === 'url'){
                    $wpdb->insert(
                        'areas_module_urls',
                        array(
                            'url'  => $value,
                            'state'  => $key[2],
                            'relation' => $key[0]
                        ));
                }
            }
        }
    }
    echo '<div class="updated"><p>Updated successfully!</p></div>';
}

UPDATE:

我换了2 insertsurl仍然没有用。我删除了检查以查看条目是否存在以及updates部分是否有效,但我显然不能这样做,因为它每次都会继续插入新行。我还为每个输入转储了$key的数据,数据显示正常,所以我不明白为什么它不起作用。

希望有人能解释为什么会这样。

0 个答案:

没有答案