-1
        global $wpdb;
        $table_name = $wpdb->prefix . "product_order";   

        $sql = "CREATE TABLE $table_name (
            id mediumint(9) NOT NULL AUTO_INCREMENT,
            range VARCHAR(255),
            category VARCHAR(255),
            order mediumint(9),
            relation mediumint(9),
            UNIQUE KEY id (id)
        );";

        $wpdb->query($sql);

这似乎没有创建一个表......有什么原因吗?我也试过dbdelta。

4

1 回答 1

1

为了得到答案,将反引号中的列名括起来,range并且order是 MySQL 中的保留字:

$sql = "CREATE TABLE $table_name (
        `id` mediumint(9) NOT NULL AUTO_INCREMENT,
        `range` VARCHAR(255),
        `category` VARCHAR(255),
        `order` mediumint(9),
        `relation` mediumint(9),
        UNIQUE KEY id (id)
    );";

http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html

附带说明一下,如果您想确保在此架构与其他 wordpress 实例共享或成为多站点时不会与其他表发生冲突,请考虑使用{$wpdb->prefix}$table_name而不是仅$table_name使用wp-config.php.

于 2012-11-05T16:16:19.757 回答