我设置了两个数据库连接,如下所示
$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'
**
答案 0 :(得分:0)
从错误看,你应该在eventos表上验证wordpress用户的权限。你的代码似乎是正确的。
如果您想验证这一点,可以尝试使用第二个连接“SELECT * from eventos”。这是脚本中的第一个查询。
答案 1 :(得分:0)
好
它解决了。
不要问问原因,但是我试图改变前两行中的顺序,即在$ con1之前输入$ con2,现在查询工作正常。
我怀疑......“真实”参数与此有关。
Thx家伙。
答案 2 :(得分:0)
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(不知道它是否解决了你的问题,但它解决了你可能会遇到的其他问题)。
答案 3 :(得分:0)
我怀疑原因是连接仍然在内存中,因此当您尝试执行第二个查询时,这将使用最后一个连接。我有与Joomla两个数据库使用问题类似的问题。我正在寻找解决此问题的方法,我认为这是我们代码中缺少的规则。
HEY !!!我明白了,问题是当你创建第二个连接时,默认PHP返回最后一个连接的相同引用。所以如果你需要一个新的连接,你应该准备一个mysql_connect,其中$ new_link为true,就像这样
$myconn = @mysql_connect($this->db2_host,$this->db2_user,$this->db2_pass, true);
最后一个参数意味着您需要一个新的引用,而不是最后一个引用。您可以找到更多信息:
希望它有所帮助。