Я установил два раздела базы данных, как показано ниже.
$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'
**
срочная помощь нужна …
Из ошибки кажется, что вы должны проверить разрешения для пользователя wordpress в таблице eventos. Ваш код кажется правильным.
Если вы хотите проверить это, попробуйте «SELECT * from eventos», используя второе соединение. Сделайте это как первый запрос в скрипте.
Что ж
Его решение.
Не спрашивайте причину, но я попытался изменить порядок в первых двух командах, то есть поставить $ con2 до $ con1, и теперь запросы просто отлично работают.
Я подозреваю, что … параметр «истина» имеет какое-то отношение к этому.
Thx ребята.
http://se2.php.net/manual/en/function.mysql-select-db.php#39095 http://se2.php.net/manual/en/function.mysql-select-db.php#93487
Кажется, проблема с mysql_select_db, вторая ссылка – одно решение.
Я бы рекомендовал использовать phps mysqli (MySQL Improved Extension) вместо старого mysql-материала (не знаю, решает ли он вашу проблему, но он решает другие проблемы, с которыми вы могли бы пойти).
Я подозреваю, что причина в том, что соединение все еще в памяти, поэтому, когда вы пытаетесь выполнить второй запрос, это использует последнее соединение. У меня аналогичная проблема с проблемой использования двух баз данных Joomla. Я ищу исправление для этой проблемы, я думаю, что это недостающее правило в нашем коде.
ПРИВЕТ!!! Я понимаю, проблема в том, что при создании второго соединения для PHP по умолчанию возвращается одна и та же ссылка для последней. Поэтому, если вам нужно новое соединение, вы должны подготовить mysql_connect с $ new_link к true, например
$myconn = @mysql_connect($this->db2_host,$this->db2_user,$this->db2_pass, true);
Последний параметр означает, что вам нужна новая ссылка, а не последняя. Вы можете найти дополнительную информацию:
ЗДЕСЬ И ЗДЕСЬ
Надеюсь, поможет.