Использование wpdb для подключения к отдельной базе данных

Я хочу подключить wpdb к другой базе данных. Как мне создать экземпляр и передать ему имя базы данных, имя пользователя и пароль?

Спасибо

Понравился вопрос? Нужен ответ? Поддержите проект
WPAsk
Ответов: 8
  1. CommentLuv

    Если ваша дополнительная база данных имеет те же данные о пользователе/пароле для доступа к ней, что и ваша база данных WordPress, вы можете использовать имя базы данных перед именем таблицы:

    $query = $wpdb->prepare('SELECT * FROM dbname.dbtable WHERE 1');
    $result = $wpdb->get_results($query);
    
  2. EAMann♦

    Другая база данных MySQL или другой тип базы данных? Вам все еще нужен доступ к обычной базе данных WordPress или вы перемещаете сайт из одной БД в другую?

  3. Аноним

    Например:

    $wpdb->select('database_name');
    

    Метод database.table работает, если вы просто хотите сделать простой запрос, но если вы хотите получить доступ к другому блогу WordPress, вы можете использовать select. Вам просто нужно изменить его обратно, когда вы закончите, или ваш блог может делать странные вещи.

  4. Wadih M.

    Да, это возможно.

    Объект wpdb может использоваться для доступа к любой базе данных и запроса к любой таблице. Абсолютно не нужно быть связанным с WordPress, что очень интересно.

    Преимущество заключается в возможности использовать все классы и функции wpdb, такие как get_results и т.д., чтобы не было необходимости заново изобретать колесо.

    Вот как:

    $mydb = new wpdb('username','password','database','localhost');
    $rows = $mydb->get_results("select Name from my_table");
    echo "<ul>";
    foreach ($rows as $obj) :
       echo "<li>".$obj->Name."</li>";
    endforeach;
    echo "</ul>";
    
  5. Volomike

    Другой вариант — создать новый экземпляр, используя EZSQL, который используется WordPress. Я думаю, что EZSQL используется, потому что это слой, который абстрагирует вас от необходимости использовать php-pdo-mysql, php-mysql или php-mysqli, не зная, что может быть установлено на данном сервере.

  6. Matt

    Я пытался использовать $wpdb для подключения ко второй базе данных блогов с родительского сайта, который должен обновить два блога. Я использовал $wpdb->gt; select ($dbname, $dbh) для выбора второй базы данных, но я все еще получал результаты из первой базы данных.

    Я решил проблему, вызвав wp_cache_flush() , чтобы очистить кэш WordPress перед вызовом функций WP для второй базы данных.

  7. jerclarke

    Подключиться ко второй базе данных в WordPress легко: вы просто создаете новый экземпляр класса WPDB и используете его так же, как и стандартный экземпляр $wpdb, который мы все знаем и любим.

    Предполагая, что вторая база данных имеет ту же информацию для входа в систему, что и основная WP, вы даже можете использовать предопределенные константы из wp-config.php, чтобы избежать жесткого кодирования информации для входа.

    /**
     * Создайте экземпляр класса wpdb для подключения к вашей второй базе данных, $database_name
     */
    $second_db = new wpdb(DB_USER, DB_PASSWORD, $database_name, DB_HOST);
    /**
     * Используйте новый объект базы данных так же, как вы бы использовали $wpdb
     */
    $results = $second_db->get_results($your_query);
    
    1. M-R

      Установите префикс WPDB, чтобы WP_Query и get_post генерировали правильный SQL-запрос, вызвав $second_db->set_prefix ('wp_');

Добавить ответ

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: