2015-04-27 32 views
4

我無法創建多個自定義表在數據庫上激活我的wordpress插件它只創建最後一個表像這個代碼中提到的是「書籤」,而不是創建所有表(用戶,場,能見度,通知)等無法創建多個自定義數據庫表激活的WP插件

function your_plugin_options_install() { 
    global $wpdb; 
    //global $your_db_name; 
    $uservar = $wpdb->prefix . 'user'; 
    $fieldvar = $wpdb->prefix . 'field'; 
    $visibilitytypevar = $wpdb->prefix . 'visibily'; 
    $notificationvar = $wpdb->prefix . 'notification'; 
    $jobtypevar = $wpdb->prefix . 'jobtype'; 
    $bookmarkvar = $wpdb->prefix . 'bookmark'; 
    // $profiledatavar = $wpdb->prefix . 'profiledata'; 
    //$employeevar = $wpdb->prefix . 'employee'; 
//echo "some"; 
    // create the ECPT metabox database table 
    //if($wpdb->get_var("SHOW TABLES LIKE '$yourtable'") != $yourtable) 
    //{ 
     $sql = "CREATE TABLE IF NOT EXISTS " . $uservar . " (
     `u_id` int(20) NOT NULL AUTO_INCREMENT, 
     `u_name` varchar(30) , 
     `u_phonenumber` int(20) , 
     `u_email` varchar(30) NOT NULL, 
     `u_password` varchar(50) NOT NULL, 
     PRIMARY KEY (u_id) 
     );"; 
      $sql = "CREATE TABLE IF NOT EXISTS " . $fieldvar . " (
     `f_id` int(20) NOT NULL AUTO_INCREMENT , 
     `f_title` varchar(30) NOT NULL, 
      PRIMARY KEY (f_id) 
     );"; 

     $sql = "CREATE TABLE IF NOT EXISTS " . $visibilitytypevar . " (
     `v_id` int(20) NOT NULL AUTO_INCREMENT , 
     `v_type` bool NOT NULL, 
      PRIMARY KEY (v_id) 
     );"; 

     $sql = "CREATE TABLE IF NOT EXISTS " . $notificationvar . " (
     `n_id` int(20) NOT NULL AUTO_INCREMENT , 
     `u_id` int(20) NOT NULL, 
     PRIMARY KEY (n_id) 
     );"; 

     $sql = "CREATE TABLE IF NOT EXISTS " . $jobtypevar . " (
     `jt_id` int(20) NOT NULL AUTO_INCREMENT , 
     `jt_title` varchar(30), 
     PRIMARY KEY (jt_id) 
     );"; 

      $sql = "CREATE TABLE IF NOT EXISTS " . $bookmarkvar . " (
     `bm_id` int(20) NOT NULL AUTO_INCREMENT , 
     `u_id` int(20) NOT NULL, 
     `bm_title` varchar(30), 
     PRIMARY KEY (bm_id) 
     );"; 


     require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); 
     dbDelta($sql); 
    } 

//} 
// run the install scripts upon plugin activation 
register_activation_hook(__FILE__,'your_plugin_options_install'); 

回答

3

要覆蓋你的$sql變量。 只需在每次查詢後使用dbDelta函數。 像下面的格式。

require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); 

// your first query 
$sql = '...'; 
dbDelta($sql); 

// your second query 
$sql = '...'; 
dbDelta($sql); 

. 
. 
. 


// your nth query 
$sql = '...'; 
dbDelta($sql); 
1

它發生,因爲在你的函數,你總是在重寫$sql變量,在執行之前。這就是爲什麼只有最後一個被執行。

每隔$sql定義後,運行查詢。

//define the query 
$sql = "CREATE TABLE `firsttable` ...."; 
//Run the query 
dbDelta($sql); //If this is what is running the query. 
//Another table 
$sql = "CREATE TABLE `secondtable` ...."; 
//Run the new query 
dbDelta($sql); //If this is what is running the query. 
0

如果​​運行於SQL你要加入這一行烏德每個SQL語句EXCUTE它

0

您也可以嘗試這樣的事:

的第一個查詢賴特$sql = "your query text goes here"

,併爲所有未來的查詢$sql .= "your query text goes here"

相關問題