Wordpress插件创建数据库表

时间:2016-05-18 16:28:26

标签: php mysql wordpress

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

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);        

非常感谢如何解决的想法。

2 个答案:

答案 0 :(得分:0)

发现了这个问题,使用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)";      

答案 1 :(得分:0)

创建表格

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));