Wordpress插件创建数据库表

时间:2011-07-18 21:15:15

标签: database wordpress plugins

我目前正在开发一个供个人使用的插件,但我只是无法获得创建表的插件,我尝试激活插件但是这里没有创建表是我的代码:

团队monobattle-registraion.php:

<?php
/*
Plugin Name: Team Monobattle Registration
Plugin URI: http://www.web-geeks.com/
Description: Plugin for registering teams for monobattles.
Author: Web-geeks
Version: 1.0
Author URI: http://www.web-geeks.com/
*/

function tmbr_admin() {
    include('team-monobattle-admin.php');
}

function tmbr_admin_actions() {
    add_options_page('Team Monobattle Registration', 'Team Monobattle Registration', 'manage_options', 'tmbr', 'tmbr_admin');
}

add_action('admin_menu', 'tmbr_admin_actions');

include('team-monobattle-database.php');

register_activation_hook(__FILE__, 'tmbr_install');
?>

团队monobattle-database.php中:

<?php

global $tmbr_db_table_version;
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
$tmbr_db_table_version = "1.0";
global $wpdb;

function tmbr_install()
{

    global $tmbr_db_table_version;
    $installed_ver = get_option( "tmbr_db_table_version" );

    if($wpdb->get_var("SHOW TABLES LIKE '$table_name'") != 'wp_teammonobattleteams' ||  $installed_ver != $tmbr_db_table_version ) {

    $sql = "CREATE TABLE wp_teammonobattleteams (
    teamid mediumint(9) NOT NULL AUTO_INCREMENT,
    teamname tinytext NOT NULL,
    pname1 tinytext NOT NULL,
    pid1 smallint NOT NULL,
    pname2 tinytext NOT NULL,
    pid2 smallint NOT NULL,
    pname3 tinytext NOT NULL,
    pid3 smallint NOT NULL,
    pname4 tinytext NOT NULL,
    pid4 smallint NOT NULL,
    UNIQUE KEY id (id)
    );";

    dbDelta($sql);

    echo('installed');
    }

}
?>

团队monobattle-admin.php的:

<div class="wrap">
<?php    echo "<h2>" . __( 'Team Monobattle Admin', 'tmbr_admin' ) . "</h2>"; ?>
</div>

帮助表示赞赏。

2 个答案:

答案 0 :(得分:1)

变量必须在你的函数中。

答案 1 :(得分:0)

“CREATE TABLE”使用起来不安全。因为如果表已经存在,那么你的mysql查询中会出错。也报告了不可避免的错误。 所以尽量使用“CREATE TABLE IF NOT EXISTS”。这是一个很好的做法。

如果您在创建表时遇到任何问题,请阅读一些在线教程并创建一个。这是一个供您参考的链接。

http://kvcodes.com/2014/06/how-to-create-table-in-wordpress-database/