检查数据库中某个表的列是否存在

时间:2017-12-15 作者:J.BizMai

在我的插件中,如果DB中已经存在特定表的一列,我想检查激活情况,以避免在每次激活时实现它。

类似这样:

class MainClassAddon{

     public function __construct(){
         register_activation_hook( __FILE__, array( $this, \'install\' ) );
     }

     public function install(){

         if( /*Checking if column c in table wp_t exists*/ ){
             $wpdb->query("ALTER TABLE wp_t ADD c INT(1) NOT NULL DEFAULT 1");
         }
     }
}
new MainClassAddon();
register_uninstall_hook( __FILE__,  array( \'PluginNamespace\\MainClassAddon\', \'uninstall\' ) );

1 个回复
最合适的回答,由SO网友:J.BizMai 整理而成

我找到了这个解决方案:here

所以

class MainClassAddon{

     public function __construct(){
         register_activation_hook( __FILE__, array( $this, \'install\' ) );
     }

     public function install(){

         $row = $wpdb->get_results(  "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = \'wp_t\' AND column_name = \'c\'"  );

         if(empty($row)){
             $wpdb->query("ALTER TABLE wp_t ADD c INT(1) NOT NULL DEFAULT 1");
         }
     }
}
new MainClassAddon();
register_uninstall_hook( __FILE__,  array( \'PluginNamespace\\MainClassAddon\', \'uninstall\' ) );

结束

相关推荐

Split posts between databases

我的客户要求为基于WP的wordpress(单站点,而不是多站点)提供一个非常具体的解决方案。基本上,他想要的是,假设在1000篇文章之后,应该创建新的数据库(只有5个表,posts,posmeta和3个与分类相关的表),新的文章应该和所有的post meta一起存储在这个数据库中,直到它达到1000篇文章,然后处理重复。具有挑战性的部分是,所有这些数据库必须同时处于活动状态,因此WP应该能够同时访问来自主数据库和所有这些新创建的数据库(有5个表)的帖子。这可能需要hyperdb. 问题包括:如何告诉wp