2013-03-27 51 views
0

最近我開始製作一個WordPress插件,它可以在WordPress中使用MySQL數據庫。但是,一些錯誤阻止了我通過這個主題獲得成功。實際上,我想在數據庫上創建一個唯一的表,只有用戶名和密碼才能登錄到本網站。在插件上向wordpress添加數據時出錯

首先,我的插件會在插件的管理面板首次訪問時在數據庫上創建一個表格。我已經試過這個代碼的SQL,它工作正常。現在

function jal_install() { 
global $wpdb; 
$table_name = $wpdb->prefix . "mydb"; // so the table name will be similar as: wp_mydb 

$sql = "CREATE TABLE IF NOT EXISTS $table_name (
id INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY , 
u_name VARCHAR(100) NOT NULL , 
p_word VARCHAR(100) NOT NULL , 
UNIQUE (
u_name 
) 
) ENGINE = MYISAM ;"; 

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

    add_option("jal_db_version", $jal_db_version); 
} 
jal_install(); 

,插件的管理面板頁面有一個形式通過Excel文件(.xls的)上傳數據。我用這個代碼使用excel reader,它工作正常。首先,看看代碼: -

$path = plugin_dir_path(__FILE__); 
$path .= 'upload'; 
$data = new Spreadsheet_Excel_Reader($path . "/" . $_FILES["xlsfile"]["name"]); 
$rows_c = $data->rowcount($sheet_index=0); 
$rows_c = $rows_c + 1; 
$table_name = $wpdb->prefix . "mydb"; // it will look like -> wp_mydb with wp_ prefix 
echo "<br />Data are added:-<br />"; 
for ($i = 1; $i < $rows_c; $i++) { 
    $u1nam2e = $data->val($i,'A'); // Should be a username like: myuname, uname_1 etc. 
    $p1wor2d = $data->val($i,'B'); // Should be a password like: mypword, asdfghjk!123 etc. 
    echo "=>When username-><b>" . $u1nam2e . "</b> Then Password-><b>" . $p1wor2d . "</b>;<br />"; 
    $sql = "INSERT INTO excel_db (u_name,p_word) 
     VALUES ('$u1nam2e','$p1wor2d')"; 
    $wpdb->query($sql); 
} 

當我跑我的插件的管理頁面上的代碼,它顯示了這樣的事情: -

Fatal error: Call to a member function query() on a non-object in C:\xampp\htdocs.......\my plugin's path\admin_panel.php on line XX

我看不到添加到數據庫中的任何數據。

現在,任何人都可以幫助我如何使用上面的代碼在數據庫上成功添加數據?

+0

是安全的假設線XX是一個在上面的代碼讀取'$ wpdb->查詢($ SQL);'? – Jerry 2013-03-27 19:55:47

+0

不是。但是,我寫的代碼更大。 – 2013-03-28 06:45:48

+0

超級有用不包括錯誤引用的代碼。 – 2014-03-17 20:26:42

回答

1

我找到了我的答案。 其實我有致電WPDB $陣列之前寫

global $wpdb; 

代碼。 因此,該代碼將是: -

$path = plugin_dir_path(__FILE__); 
$path .= 'upload'; 
$data = new Spreadsheet_Excel_Reader($path . "/" . $_FILES["xlsfile"]["name"]); 
$rows_c = $data->rowcount($sheet_index=0); 
$rows_c = $rows_c + 1; 

$table_name = $wpdb->prefix . "mydb"; // it will look like -> wp_mydb with wp_ prefix 
echo "<br />Data are added:-<br />"; 
global $wpdb; 
for ($i = 1; $i < $rows_c; $i++) { 
    $u1nam2e = $data->val($i,'A'); // Should be a username like: myuname, uname_1 etc. 
    $p1wor2d = $data->val($i,'B'); // Should be a password like: mypword, asdfghjk!123 etc. 
    echo "=>When username-><b>" . $u1nam2e . "</b> Then Password-><b>" . $p1wor2d . "</b>;<br />"; 
    $sql = "INSERT INTO excel_db (u_name,p_word) 
     VALUES ('$u1nam2e','$p1wor2d')"; 
    $wpdb->query($sql); 
}