wadihm
  • 0
Новичок

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

  • 0

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

Спасибо

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

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

    Объект 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>";
    }
    echo "</ul>";
    
    • 0
  3. Подключиться ко второй базе данных в WordPress очень просто: вы просто создаете новый экземпляр класса WPDB и используете его так же, как вы использовали бы стандартный экземпляр $wpdb, который мы все знаем и любим.

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

    /**
     * Instantiate the wpdb class to connect to your second database, $database_name
     */
    $second_db = new wpdb(DB_USER, DB_PASSWORD, $database_name, DB_HOST);
    /**
     * Use the new database object just like you would use $wpdb
     */
    $results = $second_db->get_results($your_query);
    
    • 0
  4. никто не сказал этого, поэтому я подумал, что добавлю еще более простой способ.

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

    $query = $wpdb->prepare('SELECT * FROM dbname.dbtable WHERE 1');
    $result = $wpdb->get_results($query);
    
    • 0
  5. Хотя они будут работать, вы потеряете возможность использовать «другие» пользовательские функции, такие как запросы get_post_custom и wordpress. Простое решение

    $wpdb->select('database_name');
    

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

    • 0
  6. Я пока не могу комментировать, но я хотел расширить ответ Вади М. (и это здорово).

    Класс базы данных WP — это адаптированная версия ezSQL Джастина Винсента. Если вам нравится интерфейс и вы хотите создать сайт, не основанный на WordPress, вы можете проверить его: http://justinvincent.com/ezsql

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

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

    • 0

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

You must login to add an answer.