0

sdp_invitesWordPress(v3.4.2)サイト用にカスタムテーブルを手動で作成しました。私はこれまで何度もこれを行ってきましたが、現在はどの$wpdb方法も使用できません。

global $wpdb;
global $current_user;

$query = "INSERT INTO spd_invites (sender_id,receiver_id,job_id,job_title,job_slug,employer_id) VALUES ('{$current_user->ID}','{$resume->user_id}','{$job_id}','{$job_title}','{$job_slug}','{$employer_id}')";

$wpdb->get_results($query); //ERROR...
$wpdb->query($query); //ERROR...

エラーは次のとおりです。

WordPress database error: [Table 'sow2.spd_invites' doesn't exist]
INSERT INTO spd_invites (sender_id,receiver_id,job_id,job_title,job_slug,employer_id) VALUES ('799','809','6','Professional Basket Weaver','professional-basket-weaver','5')

手動で作成したのでテーブルが存在することがわかり、phpMyAdminで確認できます。このエラーが発生する理由はありますか?

更新:WPユーザーは「root」と呼ばれます(私のローカル開発セットアップでは)。phpMyAdminにリストされている権限は次のとおりです。

User    Host             Type    Privileges  Grant  Action
root    localhost    global  ALL PRIVILEGES  Yes    

UPDATE2:たくさんの可能性を排除するために、私はもっと簡単なクエリを試しました:"SELECT * FROM sdp_invites"。これは同じエラーをスローします。wpコアテーブルに変更すると、エラーなしで動作します"SELECT * FROM sdp_invites"

4

1 に答える 1

2

私の推測では、Wordpress の MySQL データベース ユーザーに、新しいカスタム テーブルのアクセス許可を付与していない可能性があります。おそらく、別の MySQL ユーザーでphpMyAdmin. 実行してみてください:

GRANT ALL PRIVILEGES ON sow2.spd_invites TO 'wordpress_user'@'wordpress_host';
FLUSH PRIVILEGES; -- load new privileges

「wordpress_user」をWordpressのMySQLユーザー名(にあるwp-config.php)に置き換え、「wordpress_host」をWordpressサーバーのホスト名(または同じサーバー上にある場合はlocalhost)に置き換えます。

これにより、Wordpress MySQL の完全な権限 ( SELECTINSERTDROPなど) がこのテーブルに許可されることに注意してください。これは望ましくない場合があります。コマンドに関する私の情報については、MySQL のドキュメントを参照してくださいGRANT- http://dev.mysql.com/doc/refman/5.5/en/grant.html

query()結果が返されないため、関数を使用して挿入を実行する必要があります。

$wpdb->query($query);

WordPress MySQL ユーザーに表示されるすべてのテーブルを表示するには、テーマのfunctions.phpファイルに次を追加して、すべてのページの下部にテーブル名を出力します。

function show_all_tables(){
    global $wpdb; 
    foreach($wpdb->get_results("SHOW TABLES", ARRAY_N) as $table): 
        echo $table[0]."<br/>"; 
    endforeach;
} 
add_action('wp_footer', 'show_all_tables');
于 2012-10-30T21:09:30.353 に答える