wake-up-neo.com

daten aus dem Plugin mit WP3.1 in die Datenbanktabelle einfügen

Ich bin ziemlich neu in WP Plugin World. Ich versuche, ein Plugin in WP 3.1 zu entwickeln, wenn ich versuche, Daten in meine Tabelle mit dem Namen "wp_enam" auf folgende Weise einzufügen:

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

es funktioniert nicht.

Ich versuche es auf folgende Weise zu debuggen:

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

Jetzt erhalte ich folgende Nachricht von 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]')

Wie Sie sehen, wird der Tabellenname in der mysql-Abfrage nicht angezeigt. Ist dies eine korrekte Methode, um mit $wpdb->my_table auf einen Tabellennamen zuzugreifen? Ich benutze MySQL . Danke im Voraus.

Edit 1: Sieht aus wie $wpdb->tblnamedo das Tabellenpräfix nicht mehr hinzufügen! Laut "Professional WordPress Wrox" von Hal Stern, David Damstra und Brad Williams "(was ein großartiges Buch ist) sollte es funktionieren. Die obige Funktionalität wird in diesem Buch folgendermaßen erklärt:

$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.

( Seite: 107 )

4
enam

Sie können die Datenbankfunktion für die Datenbank hier überprüfen http://codex.wordpress.org/Function_Reference/wpdb_Class . Verwenden Sie für das Tabellenpräfix $wpdb->prefix . 'enam' und es wird das Tabellenpräfix zurückgegeben. Fügen Sie dazu einfach den Tabellennamen hinzu. Der Gesamtcode wäre also:

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

ihr Gesamtcode könnte also etwa so lauten:

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

BEARBEITEN: Wenn Sie weitere Informationen benötigen, können Sie DIESEN Artikel sehen. Dies ist ein sehr nützlicher Artikel zum Erstellen eines Plugins mit einer Datenbank.

5
user4254

Sie sollten so etwas verwenden

$wpdb->prefix . 'table_name'

stattdessen.

Wenn Sie Ihren Tabellennamen nicht durch Ihren Code wiederholen möchten, speichern Sie ihn in einer Variablen oder erstellen Sie eine Funktion wie diese: (Nichts Geiles, aber ich benutze es so, funktioniert, wenn Sie nur eine benutzerdefinierte Tabelle haben, also es ist nicht sehr vielseitig ..)

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

Ich denke das wpdb-> enam ist falsch, es existiert nicht, man muss nur dort tablename eingeben.

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