web-dev-qa-db-ja.com

プラグインコードは、あるインスタントでデータベースから情報を取得して、他のインスタントでは取得していません。なにが問題ですか?

私のプラグインコードでは、2つのテーブルからテーブルIDを取得しています。 IDは一方のテーブルから引き出されていますが、他方のテーブルからは引き出されていないので、両方のインスタンスでエラーが発生します。クエリはmysqlで使用します。何かご意見は?コードは下にあり、その下に出力されます。 IDはwp_shclassテーブルから取得されますが、wp_shinstructorテーブルからは取得されません。私が数日間これを見つめていて、何が悪いのかわからないという考え。私はWP 3.3.1を使用しています

function shmain_admin(){
if (!current_user_can('manage_options'))  {
wp_die( __('You do not have sufficient permissions to access this page.') );
}

echo "Hello class";
global $wpdb;
$shrow = $wpdb->get_row("select * from wp_shclass ORDER BY classid DESC LIMIT 1", ARRAY_A);  
$shclassid = $shrow['classid'];
echo "<br> this is " . $shclassid;
$wpdb->show_errors();
$wpdb->print_error();
echo "<br> Hello instructor";
$shrow = $wpdb->get_row("select * from wp_shinstructor ORDER BY instructorid DESC LIMIT 1", ARRAY_A);  
$shinstructorid = $shrow['instructorid'];
echo "<br> this is " . $shinstructorid;
$wpdb->print_error();
}

function shmain_admin_action(){
add_menu_page('sh main', 'main', 'manage_options','shmain', 'shmain_admin');
}

add_action('admin_menu','shmain_admin_action');

そしてこれが以下の出力です


こんにちはクラス8

WordPress database error: []
select * from wp_shclass ORDER BY classid DESC LIMIT 1

こんにちはインストラクターはこちら

WordPress database error: []
select * from wp_shinstructor ORDER BY instructorid DESC LIMIT 1
1
wpuserpj

テーブルを削除して再作成することで問題は解決しました。問題は私がテーブルを作成した方法にありました

0
wpuserpj

一般的に、私は$wpdbについて 詳細をCodex で読むことを勧めます。

いくつかのメモ:

  1. デフォルトのwp_プレフィックスを使用しないでください。
  2. ハードコーディングされたプレフィックスを設定しないでください。これはインストール中に設定され、後で$wpdb->prefixを使って追加されるべきです。ただし、次のSQLコマンドを使用して接頭辞を変更できます。 "RENAME table wp_posts TO {$wpdb->prefix}posts;"
  3. 通常、カスタムテーブルを回避する方法は常にあります。 CPTとカスタム分類法はその一例です。
0
kaiser