2017-09-13 169 views
0

工作在WordPress插件我有這樣的代碼全局變量不是內部功能

$country_table = $wpdb->prefix . "trackbyid_country"; 
$cities_table = $wpdb->prefix . "trackbyid_cities"; 
function database_creation(){ 
    global $wpdb; 
    global $country_table; 
    global $cities_table; 
    $AO_name = "trackbyid_dbv"; 
    $AO_value = "1"; 
    add_option($AO_name, $AO_value); 

    $charset_collate = $wpdb->get_charset_collate(); 
    $sql = "CREATE TABLE $country_table (
     id mediumint(9) NOT NULL AUTO_INCREMENT, 
     time datetime DEFAULT '0000-00-00 00:00:00' NOT NULL, 
     country tinytext NOT NULL, 
     PRIMARY KEY (id) 
     ) $charset_collate;"; 
    require_once (ABSPATH . 'wp-admin/includes/upgrade.php'); 
    dbDelta($sql); 
    $sql = "CREATE TABLE $cities_table(
     id mediumint(9) NOT NULL AUTO_INCREMENT, 
     time datetime DEFAULT '0000-00-00 00:00:00' NOT NULL, 
     city tinytext NOT NULL, 
     country_id mediumint(9) NOT NULL, 
     city_latitude mediumint(9) NOT NULL, 
     city_longitude mediumint(9) NOT NULL, 
     PRIMARY KEY (id) 
     ) $charset_collate;"; 
    dbDelta($sql); 


} 

我想我的問題(沒有被創建的數據庫)是全球$ country_table和$ cities_table變量。當我將該變量作爲本地問題解決時! 我的全局變量聲明和用法有什麼問題?

+0

btw你可以聲明它爲'global $ wpdb,$ country_table,$ cities_table;',沒有理由使用多行。你還沒有告訴我們你的代碼出了什麼問題,你只是說出你認爲的問題是什麼,我們無法讀懂你的想法,所以我們不知道預期與實際結果。 – GrumpyCrouton

+0

你真的只需要'$ wpdb'全局變量,你可以在函數內部聲明另外兩個變量,這是我推薦在大多數情況下在函數外執行的'$ wpdb-> prefix' – GrumpyCrouton

+0

,需要'global $ wpdb '。 – WhereDidMyBrainGo

回答

0

您的變量$country_table$cities_table將不會被定義,因爲在您嘗試在這些變量中使用它之前,您沒有帶入全局$ wpdb。試試這個:

global $wpdb; 
$country_table = $wpdb->prefix . "trackbyid_country"; 
$cities_table = $wpdb->prefix . "trackbyid_cities"; 

function database_creation(){ 
    global $country_table, $cities_table; 

    ... 

} 
+0

@這是正確的,並將'global $ country_table,$ cities_table;'更正爲'global $ country_table,$ cities_table,$ wpdb;'問題解決 –