2015-04-27 27 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"

相关问题