WordPress和SQL-如果列值不存在,则从另一个表更新和插入

时间:2015-05-02 作者:Cptn

为我的wordpress站点安装了一些mysql。均在1 DB以内。

我正在尝试更新wp_options 表格来源wp_2_options (多站点)。

他们都有option_name (unique\\u键)和option_value

它需要更新option_valuewp_options 如果option_name 中已存在wp_2_options 桌子

并从中插入行wp_2_options 如果option_name 不存在。

那么我该怎么做UPDATE 和“使用插入”UNIQUE KEY 值而不是PRIMARY KEY

我该怎么做?

两者的结构相同

wp_options ( option_id bigint(20) unsigned NOT NULL AUTO_INCREMENT, option_name varchar(64) NOT NULL DEFAULT \'\', option_value longtext NOT NULL, autoload varchar(20) NOT NULL DEFAULT \'yes\', PRIMARY KEY (option_id), UNIQUE KEY option_name (option_name) ) ENGINE=InnoDB AUTO_INCREMENT=1402 DEFAULT CHARSET=utf8;

提前感谢

更新:

最终使用此插入然后更新。这对我有用。现在将通过PHP使用它。

-- Adding completely new rows from wp_2_options into wp_options INSERT IGNORE INTO wp_options SELECT * FROM wp_2_options WHERE option_name NOT IN (SELECT option_name FROM wp_options);

-- Updating the option_name field in wp_options, if that got changed in wp_2_options UPDATE wp_options JOIN wp_2_options ON wp_options.option_name = wp_2_options.option_name SET wp_options.option_value = wp_2_options.option_value;

1 个回复
SO网友:TheDeadMedic

使用PHP和WordPress API。将以下内容放入copy-options.php 并将其FTP到wp-content/plugins, 然后从主站点激活它:

<?php

/**
 * Plugin Name: Copy Options
 * Plugin URI:  http://wordpress.stackexchange.com/q/186092/1685
 * Description: Copy options from site 2 to site 1.
 * Version:     0.1
 * Author:      TheDeadMedic
 * Author URI:  http://wordpress.stackexchange.com/users/1685/thedeadmedic
 */

function wpse_186092_copy_options() {
    if ( 2 !== $blog_id = get_current_blog_id() )
        switch_to_blog( 2 );

    // Get all options from blog 2
    $options = wp_load_alloptions();

    // Switch to main blog
    switch_to_blog( 1 );

    foreach ( $options as $name => $value )
        update_option( $name, $value ); // Will update option if exists, insert if not

    // Switch back to current blog
    switch_to_blog( $blog_id );     
}

register_activation_hook( __file__, \'wpse_186092_copy_options\' );
先备份。此代码未经测试,不提供保修。

结束

相关推荐

使用JQuery/AJAX从MySQL动态填充层叠下拉菜单

我想要实现的是以与MS Access相同的方式管理WordPress页面前端的表。所以,我想显示由外键关联的依赖级联下拉列表,然后单击一些按钮来执行插入/更新查询。老实说,我觉得很奇怪,没有什么东西(甚至没有高级插件)可以做这样的操作,因为它们真的很有用,几乎被所有企业使用。