2016-05-18 14 views
0

テーブル内にデータベーステーブルのペアを作成しようとしています。以下は、私のプラグインの起動時に実行されているコードブロックです。 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);   

どのように解決するかについてのアイデアは非常に高く評価されます。

答えて

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)";  
+0

前の投稿に申し訳ありません。私は今日気がついていませんが、このリンクはhttp://codex.wordpress.org/Creating_Tables_with_Plugins#Creating_or_Updating_the_Table –

+0

のお手伝いをしてくれてありがとうございます:) – Nebri

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; 
$delete = $wpdb->delete($wpdb->prefix.'tabloadi',array('alan1'=>$alan1deger,'alan2'=>$alan2deger)); 
を削除

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

を選択

関連する問題