-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

答えのために、列名を後ろの目盛りで囲み、rangeMySQLorderでは予約語として使用します。

$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_namewp-config.php

于 2012-11-05T16:16:19.757 に答える