php - 从插件将数据添加到 WordPress 上的 MySQL 表时出错

标签 php mysql wordpress

最近我开始制作一个 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 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

我看不到任何添加到数据库中的数据。

现在,请有人帮助我如何使用上面的代码在数据库中成功添加数据?

最佳答案

我已经找到答案了。 其实我必须写

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

关于php - 从插件将数据添加到 WordPress 上的 MySQL 表时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15666097/

相关文章:

Python flask : Getting an 'OperationalError' object is not callable when inserting to database

mysql - 每 24 小时安排一次 MySQL 查询;查询表并将结果存储在另一个表中

php - 使用 EXEC-PHP 在 wordpress 中显示订单

php - 有没有办法在 Wordpress 上创建重复的子类别 slug?

php - 如何将页脚中回显的 <div> float 到位于其他位置的 <div> 上 (PHP/jQuery/HTML/CSS)

php - Foreach不插入MySQL的字段

php - 在 PHP 中向 Datetime 对象添加一微秒

mysql - 从表中删除记录,其中<字段的最大数量并保留最大数量

Wordpress - 通过检查用户状态从外部 bbPress 更改论坛角色

php - 我在哪里可以获得亚马逊 MWS 产品类别的完整列表?