WordPress 使用 dbDelta 创建数据库

先看例子:

function create_custom_table(){
    global $wpdb;
    $table_name = $wpdb->prefix . "custom_table"; // 获取表名
    $charset_collate = $wpdb->get_charset_collate(); // 字符集
    if($wpdb->get_var("show tables like '$table_name'") != $table_name){ // 判断表是否存在
        $sql = "CREATE TABLE $table_name (
            id mediumint(9) NOT NULL AUTO_INCREMENT,
            name varchar(10) NOT NULL,
            UNIQUE KEY id (id)
        ) $charset_collate;";

        if(!function_exists('dbDelta')) {
            require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
        }

        dbDelta($sql);
    }
}

sql语句需要遵循的规则:

1、必须在SQL语句中将每个字段放在自己的行上。
2、在单词PRIMARY KEY和主键定义之间必须有两个空格。
3、必须使用关键字KEY而不是其同义词INDEX,并且必须至少包含一个KEY。
4、不得在字段名称周围使用任何撇号(apostrophes)或反引号(backticks)。
5、字段类型必须全部为小写。
6、SQL关键字(例如CREATE TABLE和UPDATE)必须为大写。
7、必须指定所有接受长度参数的字段的长度。例如int(11)。

还有一点是我在创建表时遇到的,不要使用关键词。比如我的字段名为system时,是无法创建表的。

发表评论