web-dev-qa-db-ja.com

wP3.1のプラグインからデータベーステーブルにデータを挿入する

WP Plugin Worldはかなり新しいものです。次の方法で "wp_enam"という名前のテーブルにデータを挿入しようとしているときに、WP 3.1でプラグインを開発しようとしています。

$wpdb->insert($wpdb->enam, array('username' => "enam" ,
                                 'useremail' => "[email protected]"));

それは働いていません。

私は以下の方法でそれをデバッグしようとします:

$wpdb->show_errors();
$wpdb->insert($wpdb->enam, array('username' => "enam" ,
                                 'useremail' => "[email protected]"));
$wpdb->print_error(); 

今私はMR.WPから次のようなメッセージを得ています

WordPress database error: [Incorrect table name '']
INSERT INTO `` (`username`,`useremail`) VALUES ('enam','[email protected]')

WordPress database error: [Incorrect table name '']
INSERT INTO `` (`username`,`useremail`) VALUES ('enam','[email protected]')

ご覧のとおり、テーブル名はmysqlクエリに表示されていません。これは$wpdb->my_tableを使ってテーブル名にアクセスする正しい方法ですか? 私はmysqlを使用しています 。前もって感謝します。

編集1: / $wpdb->tblnameはテーブルプレフィックスをもう追加しないようです! Hal Stern、David Damstra、Brad Williamsによる "Professional WordPress Wrox" (これは素晴らしい本です)上記の機能は次のようにこの本で説明されています。

$wpdb->my_custom_table to reference the table in WordPress. 
This translates to wp_my_custom_table if wp_ is the table prefix. 
This is the proper way to determine the correct table prefix when working with tables in the WordPress database.

ページ:107

4
enam

データベースのデータベース機能はここで確認できます http://codex.wordpress.org/Function_Reference/wpdb_Class 。テーブルの接頭辞については、$wpdb->prefix . 'enam'を使用すると、テーブルの接頭辞が返されます。これでテーブル名を追加するだけです。したがって、合計コードは次のようになります。

$yourtablename =  $wpdb->prefix . 'enam';

だからあなたの合計コードは次のようになります。

$wpdb->insert($yourtablename , array('username' => "enam" ,
                             'useremail' => "[email protected]"));

編集:あなたがより多くの情報を必要とするなら、あなたは _ this _ の記事を見ることができる。これはデータベースを使ってプラグインを作成するためのとても役に立つ記事です。

5
user4254

あなたはのようなものを使うべきです

$wpdb->prefix . 'table_name'

代わりに。

あなたのコードであなたのテーブル名を繰り返したくないのであれば、それを変数に保存するかこのような関数を作成してください。それは非常に多目的ではありません..)

function get_table_name() {
    global $wpdb;
    return $wpdb->prefix . 'table_name';
}
3
depi

私はwpdb-> enamが間違っていると思います、それは存在しません、あなたはただそこにtablenameを入力しなければなりません。

$wpdb->insert("table_name", array('username' => "enam" ,
                             'useremail' => "[email protected]"));
0
Patriek