0

MySQL最近、WordPress のデータベースで動作する WordPress プラグインの作成を開始しました。しかし、いくつかのバグが原因で、このテーマで成功を収めることができません。実際、このサイトにログインするためのユーザー名とパスワードのみを持つデータベース上に一意のテーブルを作成したいと考えています。

まず、My Plugin は、プラグインの管理パネルの最初の訪問時にデータベースにテーブルを作成します。このコードを 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);
}

プラグインの管理ページでコードを実行すると、次のように表示されます:-

致命的なエラー: C:\xampp\htdocs.......\my plugin's path\admin_panel.php 行 XX の非オブジェクトに対するメンバー関数 query() の呼び出し

データベースに追加されたデータが表示されません。

さて、上記のコードを使用してデータベースにデータを正常に追加する方法を教えてください。

4

1 に答える 1

1

私は自分の答えを見つけました。実は書かなきゃいけない

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);
}
于 2013-03-28T06:47:36.837 に答える