enam
  • 0
Новичок

Вставить данные в таблицу базы данных из плагина с WP3.1

  • 0

Я новичок в WP Plugin World. Я пытаюсь разработать плагин в WP 3.1, когда пытаюсь вставить данные в свою таблицу с именем » wp_enam » следующим образом:

$wpdb->insert($wpdb->enam, array('username' => "enam" ,
                                 'useremail' => "myemail@somedomain.com"));

это не работает.

Я пытаюсь отладить его следующим образом:

$wpdb->show_errors();
$wpdb->insert($wpdb->enam, array('username' => "enam" ,
                                 'useremail' => "myemail@somedomain.com"));
$wpdb->print_error(); 

Теперь я получаю следующее сообщение от MR.WP

WordPress database error: [Incorrect table name '']
INSERT INTO `` (`username`,`useremail`) VALUES ('enam','myemail@somedomain.com')

WordPress database error: [Incorrect table name '']
INSERT INTO `` (`username`,`useremail`) VALUES ('enam','myemail@somedomain.com')

Как видите, имя таблицы не отображается в запросе mysql. Это правильный способ доступа к имени таблицы с помощью $wpdb->my_table ? Я использую mysql. Заранее спасибо.

Редактировать 1: похоже $wpdb->tblname, больше не добавляйте префикс таблицы! В соответствии с «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 )

Share
  1. Хм. Я не думаю, что это когда-либо работало. Вероятно, стоит отправить отчет об ошибках, хотя в более новой книге «Профессиональная разработка плагинов для WordPress» эта ошибка не повторяется, поэтому, возможно, она уже обнаружена.

    • 0
  2. Вы можете проверить функцию базы данных для базы данных здесь. Для префикса таблицы вы должны использовать $wpdb->prefix. 'enam', и он вернет префикс таблицы. Просто добавьте к этому имя таблицы. Таким образом, общий код будет:

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

    так что ваш общий код может быть примерно таким:

    $wpdb->insert($yourtablename , array('username' => "enam" ,
                                 'useremail' => "myemail@somedomain.com"));
    

    РЕДАКТИРОВАТЬ: Если вам нужна дополнительная информация, вы можете увидеть ЭТУ статью. Это очень полезная статья для создания плагина с базой данных.

    • 0
  3. Вы должны использовать что-то вроде

    $wpdb->prefix . 'table_name'
    

    вместо.

    Если вы не хотите повторять имя таблицы в своем коде, сохраните его в переменной или создайте функцию, подобную этой: (ничего интересного, но я использую это таким образом, работает, если у вас есть только одна пользовательская таблица, поэтому это не очень универсально..)

    function get_table_name() {
        global $wpdb;
        return $wpdb->prefix . 'table_name';
    }
    
    • 0
  4. Я думаю, что wpdb->enam неверен, его не существует, вам просто нужно ввести имя таблицы.

    $wpdb->insert("table_name", array('username' => "enam" ,
                                 'useremail' => "myemail@somedomain.com"));
    
    • 0

Оставить ответ

You must login to add an answer.