2015-09-27 90 views
0

我正在從頭開始製作一個完全從頭開始的插件我試圖在插件激活時創建一個表並且我在同一個表中獲得了成功,但是現在我想要創建多個表在插件激活,但我沒有得到預期的結果。在wordpress插件上激活兩個或多個表

它只能製作兩張表中的一張,下面是我的代碼。

// 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); 
       }   
} 

此代碼僅使最後一個表「* prefix_myemail」爲一個表。請給我建議或者給我寫準確的代碼來糾正這個問題。

你的幫助是提前感激..

回答

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); 
} 
+0

感謝您的答覆,但我不喜歡不想給它或者宣佈與主鍵相同的字段。 –