Проблема нескольких баз данных 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);

Последний параметр означает, что вам нужна новая ссылка, а не последняя. Вы можете найти больше информации:

ЗДЕСЬ и ЗДЕСЬ

Надеюсь, поможет.

Другие вопросы по тегам