Php 从插件向wordpress上的MySQL表添加数据时出错

Php 从插件向wordpress上的MySQL表添加数据时出错,php,mysql,wordpress,Php,Mysql,Wordpress,最近,我开始制作一个WordPress插件,它可以在WordPress中使用MySQL数据库。但是,一些错误阻止了我在这个主题上取得成功。实际上,我想在数据库上创建一个唯一的表,只有用户名和密码才能登录到这个站点 首先,我的插件将在第一次访问插件的管理面板时在数据库上创建一个表。我已经在SQL上试用了这段代码,效果很好 function jal_install() { global $wpdb; $table_name = $wpdb->prefix . "mydb"; // so the

最近,我开始制作一个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);
}
$path=plugin\u dir\u path(\u文件\u);
$path.='upload';
$data=新电子表格\u Excel\u阅读器($path./“$\u文件[“xlsfile”][“名称]);
$rows\u c=$data->rowcount($sheet\u index=0);
$rows_c=$rows_c+1;
$table_name=$wpdb->prefix。“mydb”;//它看起来像->带有wp_u前缀的wp_umydb
echo“
添加数据:-
”; 对于($i=1;$i<$rows\u c;$i++){ $u1nam2e=$data->val($i,'A');//应该是一个用户名,如:myuname、uname_1等。 $p1wor2d=$data->val($i,'B');//应该是类似于:mypword、asdfghjk!123等的密码。 回显“=>当用户名->”$u1nam2e.。然后是密码->“$p1wor2d.;
”; $sql=“插入excel\u数据库(u\u名称,p\u单词) 值(“$u1nam2e”,“$p1wor2d”)”; $wpdb->query($sql); }
当我在插件的管理页面上运行代码时,它会显示如下内容:-

致命错误:对中的非对象调用成员函数query() C:\xampp\htdocs……\my plugin's path\admin\u panel.php,第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);
}
$path=plugin\u dir\u path(\u文件\u);
$path.='upload';
$data=新电子表格\u Excel\u阅读器($path./“$\u文件[“xlsfile”][“名称]);
$rows\u c=$data->rowcount($sheet\u index=0);
$rows_c=$rows_c+1;
$table_name=$wpdb->prefix。“mydb”;//它看起来像->带有wp_u前缀的wp_umydb
echo“
添加数据:-
”; 全球$wpdb; 对于($i=1;$i<$rows\u c;$i++){ $u1nam2e=$data->val($i,'A');//应该是一个用户名,如:myuname、uname_1等。 $p1wor2d=$data->val($i,'B');//应该是类似于:mypword、asdfghjk!123等的密码。 回显“=>当用户名->”$u1nam2e.。然后是密码->“$p1wor2d.;
”; $sql=“插入excel\u数据库(u\u名称,p\u单词) 值(“$u1nam2e”,“$p1wor2d”)”; $wpdb->query($sql); }
假设XX行是上述代码中读取
$wpdb->query($sql)的那一行是否安全?不,不是。但是代码比我写的要大。不包含错误引用的代码非常有用。。