最近我已经开始制作一个WordPress插件,它将与WordPress中的MySQL
数据库一起工作。但是,有些错误阻碍了我在这门课上取得成功。实际上,我想在数据库上做一个唯一的表,只有用户名和密码才能登录这个网站。
首先,我的插件将在第一次访问插件的管理面板时在数据库上创建一个表。我已经尝试了这个代码上的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阅读器的这段代码,它的工作很好。首先,查看代码:-
$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);
}
当我在插件的管理页面上运行代码时,它显示如下:-
致命错误:在非对象上调用成员函数query()C: ' xampp '根……'my plugin's path'admin_panel.php on line XX
我看不到任何数据被添加到数据库中。
现在,请任何人帮助我如何才能成功地添加数据与上面的代码数据库?
我找到了答案。实际上我必须写
global $wpdb;
代码在调用$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);
}