Запрос из базы данных, отличной от базы данных по умолчанию


Я делаю макет для страницы WordPress.

Макет должен быть подключен ко второй базе данных (обе базы данных находятся в одном домене).

Но проблема в том, что когда я выполняю только файл, он работает. Но когда я включил макет wordpress, я не получаю данных, никаких ошибок, ничего

Сценарий просто:

 $con = mysql_connect('host','user','pass');
 mysql_select_db('db', $con);
 $q = mysql_query('SELECT * FROM vars', $con);
 var_dump(mysql_fetch_array($q));

Как я уже сказал. Если я выполню файл один:

Http://example.com/blog/connect.php

Он отлично работает и возвращает данные.

Но если я сделаю это внутри макета (создам страницу WordPress и дам ей макет) Ничего не возвращает.

Есть идеи, что там может происходить?

Author: kaiser, 2012-02-20

2 answers

Я не знаю, почему mysql_connect не работает внутри WordPress. Но более простым способом сделать это было бы использовать класс $wpdb. Попробуйте заменить свой код следующим:

$second_db = new $wpdb( 'user', 'pass', 'dbname', 'host' );
$q = $second_db->get_results( 'SELECT * FROM vars' );
var_dump( $q );

И посмотрите, получите ли вы желаемые результаты. (обратите внимание, что порядок переменных, передаваемых конструктору $wpdb, отличается от порядка, используемого mysql_connect)

 4
Author: goldenapples, 2012-02-20 16:41:36

У Goldenapples, вероятно, есть лучшее решение, но чтобы конкретно ответить на ваш вопрос, вам нужно установить параметр new_link в функции mysql_connect равным true.

 $con = mysql_connect('host','user','pass', true);
 0
Author: Shane, 2012-02-20 16:51:42