Использование wpdb для подключения к отдельной базе данных
Я хочу подключить wpdb
к другой базе данных. Как создать экземпляр и передать ему имя базы данных /имя пользователя /пароль?
Спасибо
6 ответов
Да, это возможно.
Объект 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>";
В WordPress легко подключиться ко второй базе данных, вы просто создаете новый экземпляр класса WPDB и используете его так же, как и стандартный экземпляр $ wpdb, который все мы знаем и любим.
Предполагая, что вторая база данных имеет ту же самую регистрационную информацию, что и основной WP, вы даже можете использовать предопределенные константы из wp-config.php, чтобы избежать жесткого кодирования информации для входа.
/**
* Мгновенный запуск класса wpdb для подключения к вашей второй базе данных, $ database_name
* /
$ second_db = новый wpdb (DB_USER, DB_PASSWORD, $ database_name, DB_HOST);
/**
* Использовать новый объект базы данных так же, как вы бы использовали $ wpdb
* /
$ results = $ second_db-> get_results ($ your_query);
Никто не сказал этого, поэтому я думал, что добавлю еще более простой способ.
до тех пор, пока ваша дополнительная база данных будет иметь одинаковую информацию о пользователе /пароле, чтобы получить к ней доступ в качестве базы данных Wordpress, вы можете использовать имя базы данных до имени таблицы, подобного этой
$ query = $ wpdb-> prepare ('SELECT * FROM dbname.dbtable WHERE 1');
$ result = $ wpdb-> get_results ($ query);
Пока они будут работать, вы потеряете возможность использовать «другие» пользовательские функции, такие как запросы get_post_custom и wordpress. Простым решением является
$ wpdb- > выберите ( 'database_name');
, который изменяет базу данных по всей системе (mysql select_db). Метод database.table работает, если вы просто хотите сделать простой запрос, но если вы хотите получить доступ к другому блогу Wordpress, вы можете использовать select. Вам просто нужно будет изменить его, когда закончите, или ваш блог может делать странные вещи.
Я еще не могу прокомментировать, но я хотел расширить ответ Вадима М. (что здорово).
Класс базы данных WP - это настраиваемая версия ezSQL Justin Vincent. Если вам нравится интерфейс, и вы хотите сделать сайт, не основанный на WordPress, вы можете проверить его: http://justinvincent.com/ezsql
Я боролся с использованием $ wpdb
для подключения ко второй базе данных блогов с родительского сайта, которому необходимо обновить два блогов. Я использовал $ wpdb-> select ($ dbname, $ dbh)
, чтобы выбрать вторую базу данных, но я все еще получал результаты от первой базы данных.
Я решил проблему, вызвав wp_cache_flush ()
, чтобы очистить кэш WordPress до вызова функций WP во второй базе данных.