【问题标题】:Wordpress Plugin Create Database TableWordpress 插件创建数据库表
【发布时间】:2016-05-18 16:28:25
【问题描述】:

试图在我的表中创建一对数据库表。下面是激活我的插件时正在执行的代码块。 Wordpress 报告说它是成功的,但是,当刷新数据库时,没有创建员工表。但是,部门表已成功创建。

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

    // create the database table.        
    global $wpdb;
    $charset_collate = $wpdb->get_charset_collate();

    $table_name = $wpdb->prefix . "plugin_department";
    $table_name2 = $wpdb->prefix . "plugin_employee";

    $sql = "CREATE TABLE $table_name (
        id INT(11) NOT NULL AUTO_INCREMENT,   
        name VARCHAR(255) NOT NULL,
        PRIMARY  KEY (id)
        ) $charset_collate;";

     $sql2 = "CREATE TABLE $table_name2 (
        id INT(11) NOT NULL AUTO_INCREMENT,     
        first_name VARCHAR(255) NOT NULL,
        last_name VARCHAR(255) NOT NULL,
        department_id INT(11) NOT NULL,
        PRIMARY  KEY (id),
        CONSTRAINT department_id
        FOREIGN KEY (id)
        REFERENCES plugin_department (id)
        ON DELETE NO ACTION
        ON UPDATE NO ACTION);
        ) $charset_collate;";                

    dbDelta($sql);        
    dbDelta($sql2);        

我们将不胜感激有关如何解决的想法。

【问题讨论】:

    标签: php mysql wordpress


    【解决方案1】:

    发现了这个问题,我使用 mysql workbench 为我生成了创建表脚本,然后简单地复制并粘贴到 $sql2 变量中。我的假设是肯定有一个靠不住的字符或我的眼睛难以辨认的语法错误。

         $sql2 = "CREATE TABLE $table_name2 (
          `id` INT NOT NULL AUTO_INCREMENT,
          `first_name` VARCHAR(255) NOT NULL,
          `last_name` VARCHAR(45) NOT NULL,
          `department_id` INT NOT NULL,
          PRIMARY KEY (`id`),
          INDEX `wp_plugin_employee_department_idx` (`department_id` ASC),
          CONSTRAINT `wp_plugin_employee_department`
            FOREIGN KEY (`department_id`)
            REFERENCES `plugin_intranet`.`wp_plugin_department` (`id`)
            ON DELETE NO ACTION
            ON UPDATE NO ACTION)";      
    

    【讨论】:

    【解决方案2】:

    创建表格

    global $wpdb;
    if ($wpdb->get_var("SHOW TABLES LIKE '{$wpdb->prefix}tabloadi'") != $wpdb->prefix . 'tabloadi'){
       $wpdb->query("CREATE TABLE {$wpdb->prefix}tabloadi(
       id integer not null auto_increment,
       alan1 TINYTEXT CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
       alan2 TINYTEXT CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
       alan3 TINYTEXT CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
       alan4tarih TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
       PRIMARY KEY (id)
       );");
    }
    

    选择

    global $wpdb;
    $tabloadi = $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}tabloadi WHERE sart1=$deger1" );
    
    
    foreach($tabloadi as $row)
    {
    echo $row->id;
    echo $row->alan1;
    echo $row->tarih;
    }
    

    删除

    global $wpdb;
    $delete = $wpdb->delete($wpdb->prefix.'tabloadi',array('alan1'=>$alan1deger,'alan2'=>$alan2deger));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-03
      • 2019-08-19
      • 1970-01-01
      • 2015-02-21
      • 1970-01-01
      • 2021-12-18
      • 1970-01-01
      • 2017-11-11
      相关资源
      最近更新 更多