在wordpress插件激活上制作两个或多个表

时间:2015-09-27 07:09:52

标签: database wordpress psd

我最近从头开始制作了一个插件我尝试在插件激活上制作一个表,并且我在同一个方面取得了成功,但现在我想在插件激活上创建多个表,但我没有得到预期结果

它只有两个表中的一个,这是我的代码。

// Registering plugin

register_activation_hook(__FILE__,'myplugin_activate'); 

function myplugin_activate() 

{

                global $wpdb;
                $table_name1 = $wpdb->prefix . "myentries";
                $table_name2 = $wpdb->prefix . "myemail";

                //installed_ver = get_option('my-voting-version');

                if( $wpdb->get_var("show tables like '$table_name1' ") != $table_name1)  
                {

                    $sql = "CREATE TABLE IF NOT EXISTS `" . str_replace('`', '', $table_name1) . "`(
                    id mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
                    name varchar(50) NOT NULL,
                    sub longtext NOT NULL,
                    message longtext NOT NULL,                   
                    );";
                    require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
                    dbDelta($sql);
                }   
               if( $wpdb->get_var("show tables like '$table_name2' ") != $table_name2 )      
                {    
                    $sql = "CREATE TABLE IF NOT EXISTS `" . str_replace('`', '', $table_name2) . "`(
                    id mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
                    email varchar(50) NOT NULL,
                    PRIMARY KEY  (id)
                    );";
                    require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
                    dbDelta($sql);
                }          
}

此代码只生成一个表,即最后一个表#34; * prefix_myemail"。请建议我或给我准确的代码来纠正这个问题。

提前感谢您的帮助..

1 个答案:

答案 0 :(得分:0)

您可能忘记了myentries表的主键, 尝试像这样添加主键

if( $wpdb->get_var("show tables like '$table_name1' ") != $table_name1)  
{

    $sql = "CREATE TABLE IF NOT EXISTS `" . str_replace('`', '', $table_name1) . "`(
    id mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
    name varchar(50) NOT NULL,
    sub longtext NOT NULL,
    message longtext NOT NULL,        
    PRIMARY KEY  (id)           
    );";
    require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
    dbDelta($sql);
}