首页 > 解决方案 > 安装时创建数据库表并插入不起作用 - wordpress 插件

问题描述

我创建了一个函数,它在激活时在 Wordpress 数据库中创建表。我已经检查过只有这个函数在激活时会产生意外的输出错误。同样奇怪的是代码只创建和填充第一个表。但是当我删除创建第一个表的部分代码时,下面的sql查询不生效。我阅读了互联网上所有相关的帖子,但没有找到解决方案。谁能帮我吗?

    function prtxgal_install(){
    global $wpdb;

    $prtx_getsettings = $wpdb->get_row( "SELECT * FROM " . $wpdb->prefix . "prtxgal_settings WHERE id = 1;" );


    if ($prtx_getsettings == NULL) {

        $table_name = $wpdb->prefix . "prtxgal_settings";
        $table_name2 = $wpdb->prefix . "prtxgal_galleries";
        $table_name3 = $wpdb->prefix . "prtxgal_images";

        $charset_collate = $wpdb->get_charset_collate();

        require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );

        $sql = "CREATE TABLE $table_name (
        id mediumint(9) NOT NULL AUTO_INCREMENT,
        time timestamp DEFAULT CURRENT_TIMESTAMP NOT NULL,
        outline_color text NOT NULL,
        desc_bg_color text NOT NULL,
        font_color text NOT NULL,
        file_path text NOT NULL,
        PRIMARY KEY  (id)
        ) $charset_collate;";
        dbDelta( $sql );

        $sql = "CREATE TABLE $table_name2 (
        id mediumint(9) NOT NULL AUTO_INCREMENT,
        time timestamp DEFAULT CURRENT_TIMESTAMP NOT NULL,
        name text NOT NULL,
        preview_image text NOT NULL,
        image_number text NOT NULL,
        order int(10) NOT NULL,
        published int(2) NOT NULL,
        PRIMARY KEY  (id)
        ) $charset_collate;";
        dbDelta( $sql );

        $sql = "CREATE TABLE $table_name3 (
        id mediumint(9) NOT NULL AUTO_INCREMENT,
        time timestamp DEFAULT CURRENT_TIMESTAMP NOT NULL,
        gallery_id text NOT NULL,
        filename text NOT NULL,
        image_url text NOT NULL,
        thumb_url text NOT NULL,
        description text NOT NULL,
        alt text NOT NULL,
        order int(10) NOT NULL,
        PRIMARY KEY  (id)
        ) $charset_collate;";
        dbDelta( $sql );

        $wpdb->insert(
                $table_name,
                array(
                        'id' => 1,
                        'outline_color' => '#000000',
                        'desc_bg_color' => '#000000',
                        'font_color' => '#ffffff',
                        'file_path' => '/images/default.png'
                    )
                    );

    }

标签: wordpress

解决方案


我最终得到了这个并且运行良好,非常感谢您的帮助。

function prtxgal_install(){
    global $wpdb;



        $table_name = $wpdb->prefix . "prtxgal_settings";
        $table_name2 = $wpdb->prefix . "prtxgal_galleries";
        $table_name3 = $wpdb->prefix . "prtxgal_images";

        $charset_collate = $wpdb->get_charset_collate();

        require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );

        $sql = "CREATE TABLE IF NOT EXISTS $table_name (
        id mediumint(9) NOT NULL AUTO_INCREMENT,
        time timestamp DEFAULT CURRENT_TIMESTAMP NOT NULL,
        outline_color text NOT NULL,
        desc_bg_color text NOT NULL,
        font_color text NOT NULL,
        file_path text NOT NULL,
        PRIMARY KEY  (id)
        ) $charset_collate;";
        dbDelta( $sql );

        $sql = "CREATE TABLE IF NOT EXISTS $table_name2 (
        id mediumint(9) NOT NULL AUTO_INCREMENT,
        time timestamp DEFAULT CURRENT_TIMESTAMP NOT NULL,
        name text NOT NULL,
        preview_image text NOT NULL,
        image_count text NOT NULL,
        gal_order int(10) NOT NULL,
        published int(9) NOT NULL,
        PRIMARY KEY  (id)
        ) $charset_collate;";
        dbDelta( $sql );

        $sql = "CREATE TABLE IF NOT EXISTS $table_name3 (
        id mediumint(9) NOT NULL AUTO_INCREMENT,
        time timestamp DEFAULT CURRENT_TIMESTAMP NOT NULL,
        gallery_id text NOT NULL,
        filename text NOT NULL,
        image_url text NOT NULL,
        thumb_url text NOT NULL,
        description text NOT NULL,
        alt text NOT NULL,
        img_order int(10) NOT NULL,
        PRIMARY KEY  (id)
        ) $charset_collate;";
        dbDelta( $sql );

        $wpdb->insert(
                $table_name,
                array(
                        'id' => 1,
                        'outline_color' => '#000000',
                        'desc_bg_color' => '#000000',
                        'font_color' => '#ffffff',
                        'file_path' => '/images/default.png'
                    )
                    );




}

推荐阅读