Проблема нескольких баз данных php
Я установил две базы данных, как показано ниже
$con1 = mysql_connect("localhost", "root", "pwd") or die (mysql_error());
$con2 = mysql_connect("localhost", "wordpress", "pwd", true) or die(mysql_error());
mysql_select_db("lab_ancp", $con1) or die(mysql_error());
mysql_select_db("wordpress",$con2) or die(mysql_error());
и работает нормально
так что я делаю несколько запросов на странице, как это:
$sql="select unome from associado where uid=$uid";
$result=mysql_query($sql,$con1) or die(mysql_error());
и это работает нормально, после этого я делаю второй запрос, как это:
$sql="select ID, post_content, post_title, post_excerpt, meta_value
from wp_posts join (
select post_id, meta_value
from wp_postmeta
join (
select post_id from wp_postmeta
where meta_key='destaque' and meta_value='s'
)as t1 using(post_id)
where meta_key='pft_widescreen'
) as t2 on (wp_posts.ID=t2.post_id)
ORDER BY RAND() LIMIT 1";
//echo $sql . "<br />";
$row=mysql_fetch_assoc(mysql_query($sql,$con2)) or die(mysql_error());
и опять все просто отлично, но потом....
$sql="select * from eventos where edatade>='$hoje' or edataate>='$hoje'";
$result=mysql_query($sql, $con1) or die (mysql_error());
выдает эту ошибку:
**
Команда SELECT запрещена пользователю 'wordpress'@'localhost' для таблицы 'eventos'
**
4 ответа
Что ж
Это решено.
Не спрашивайте причину, но я попытался изменить порядок в первых двух roww, то есть положить $con2 перед $con1, и теперь запросы просто работают нормально.
Я подозреваю, что параметр "true" как-то связан с этим.
Спасибо ребята.
http://se2.php.net/manual/en/function.mysql-select-db.php http://se2.php.net/manual/en/function.mysql-select-db.php
Кажется, проблема с mysql_select_db, вторая ссылка является одним из решений.
Я бы порекомендовал использовать phps mysqli (MySQL Improved Extension) вместо старых вещей mysql (не знаю, решит ли это вашу проблему, но решит и другие проблемы, с которыми вы можете столкнуться).
Судя по ошибке, вам следует проверить права доступа для пользователя WordPress к таблице Eventos. Ваш код кажется правильным.
Если вы хотите проверить это, возможно, попробуйте "SELECT * from eventos", используя второе соединение. Сделайте это как первый запрос в скрипте.
Я подозреваю, что причина в том, что соединение все еще находится в памяти, поэтому при попытке выполнить второй запрос используется последнее соединение. У меня есть похожая проблема с Joomla две проблемы использования баз данных. Я ищу решение для этой проблемы, я думаю, что в нашем коде отсутствует правило.
ПРИВЕТ!!! Я понял, проблема в том, что когда вы создаете второе соединение, по умолчанию PHP возвращает ту же ссылку для последнего. Поэтому, если вам нужно новое соединение, вы должны подготовить mysql_connect с $ new_link в значение true, как это
$myconn = @mysql_connect($this->db2_host,$this->db2_user,$this->db2_pass, true);
Последний параметр означает, что вам нужна новая ссылка, а не последняя. Вы можете найти больше информации:
Надеюсь, поможет.