2012-11-12 90 views
0

有人可以幫我找出爲什麼wordpress在我激活我的插件時不會創建「wp_locations」表。Wordpress數據庫表沒有創建

global $wp_locations_version; 
$wp_locations_version = "1.1"; 

define('LOCATIONURL', plugins_url().'/wp_locations'); 

function locations_install() { 
    global $wpdb; 
    global $wp_locations_version; 


    $sql = "CREATE TABLE IF NOT EXISTS wp_locations (
    ID BIGINT NOT NULL AUTO_INCREMENT, 
    location VARCHAR(100) NOT NULL, 
    address VARCHAR(255) NOT NULL, 
    lattitude INT, 
    longitude INT, 
    description MEDIUMTEXT NULL, 
    person VARCHAR(50) NOT NULL, 
    personimg VARCHAR(255) NOT NULL, 
    email VARCHAR(255) NULL, 
    phone INT, 
    sort INT 
    );"; 

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

    add_option("wp_locations_version", $wp_locations_version); 
} 
register_activation_hook(__FILE__ , 'locations_install'); 

回答

0

代碼中沒有與數據庫的連接。新增功能像這樣的:

 function MySQLConnect() { 
      $MySQLink = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) ;// These parameters are defined in 'wp-config.php' 
      if (!$MySQLink) : 
      return FALSE ; 
      else : 
      return $MySQLink ; 
      endif ; 
     } 

然後,在功能locations_install(),在開始添加以下代碼行進行連接:

 $Link = MySQLConnect() ; 
     if (!$Link) return FALSE ; 
     ...       

希望這有助於。

UPDATE

站在糾正Sudar。

在Wordpress中這樣做的方法應該是使用類wpdb,它不需要新的連接。在這種情況下,存在以下問題:

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

從wp-admin調用插件腳本。它應該是:

require_once('/includes/upgrade.php'); 

對不起。

+0

感謝您的幫助。我不確定這是否需要連接到數據庫,因爲它是一個wordpress插件,它應該已經可以訪問它。 –

+0

是的,你必須建立一個新的連接。 –

+0

OP說它是WordPress。在WordPress中,您不必打開自己的連接。它將在全局$ wpdb變量中可用。 – Sudar