Запрос из базы данных, отличной от базы данных по умолчанию
Я делаю макет для страницы 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));
Как я уже сказал. Если я выполню файл один:
Он отлично работает и возвращает данные.
Но если я сделаю это внутри макета (создам страницу WordPress и дам ей макет) Ничего не возвращает.
Есть идеи, что там может происходить?
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
)
У Goldenapples, вероятно, есть лучшее решение, но чтобы конкретно ответить на ваш вопрос, вам нужно установить параметр new_link
в функции mysql_connect
равным true
.
$con = mysql_connect('host','user','pass', true);