Usando wpdb para se conectar a um database separado

Eu quero conectar wpdb a outro database. Como faço para criar a instância e passar o nome do database / nome de usuário / senha?

obrigado

Solutions Collecting From Web of "Usando wpdb para se conectar a um database separado"

Sim é possivel.

O object wpdb pode ser usado para acessar qualquer database e consultar qualquer tabela. Absolutamente não há necessidade de ser o WordPress relacionado, o que é muito interessante.

O benefício é a capacidade de usar todas as classs wpdb e funções como get_results , etc, para que não haja necessidade de reinventar a roda.

Veja como:

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

Conectando a um segundo database é fácil no WordPress, você simplesmente cria uma nova instância da class WPDB e usa-a da mesma forma que você usaria a instância $ wpdb padrão que todos conhecemos e amamos.

Supondo que o segundo database tenha as mesmas informações de login que o WP principal, você pode até usar as constantes predefinidas de wp-config.php para evitar codificar as informações de login.

 /** * 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); 

Ninguém disse isso, então pensei que gostaria de adicionar uma maneira ainda mais fácil.

desde que seu database adicional tenha os mesmos detalhes de usuário / pass para acessá-lo como seu database wordpress você pode usar o nome do database antes do nome da tabela como esse

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

Enquanto isso vai funcionar, você perderá a capacidade de usar os “outros” resources personalizados, como consultas get_post_custom e wordpress. A solução simples é

 $wpdb->select('database_name'); 

que altera o database em todo o sistema (um mysql select_db). O método database.table funciona se você quiser apenas fazer uma consulta simples, mas se você quiser acessar outro blog wordpress você pode usar selecione. Você precisará trocá-lo quando terminar ou seu blog pode fazer coisas estranhas.

Ainda não posso comentar, mas queria expandir a resposta de Wadih M. (o que é ótimo).

A class de database do WP é uma versão personalizada do ezSQL do Justin Vincent. Se você gosta da interface e está querendo fazer um site que não seja baseado em WordPress, você pode querer verificar isso: http://justinvincent.com/ezsql

Eu estava lutando com o uso de $wpdb para conectar-me a um segundo database de blog de um site pai que precisa atualizar dois blogs. Eu usei $wpdb->select($dbname, $dbh) para selecionar o segundo database, mas ainda obtive resultados do primeiro database.

Eu resolvi o problema chamando wp_cache_flush() para limpar o cache do WordPress antes de chamar funções do WP no segundo database.