Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL如何连接两个不同数据库中的两个表?_Php_Mysql_Sql_Database_Join - Fatal编程技术网

Php MySQL如何连接两个不同数据库中的两个表?

Php MySQL如何连接两个不同数据库中的两个表?,php,mysql,sql,database,join,Php,Mysql,Sql,Database,Join,我有两个数据库chinmay235和desarrollo_论坛 我想使用联接查询联接两个表nuke\u follow\u投票和smf\u成员 nuke_follow_投票表格存在于chinmay235中,而smf_成员存在于Desarrollou论坛数据库中 代码: <?php $dbhost = "localhost"; $dbuname = "chinmay_db"; $dbpass = "2014@movie"; $dbname = "chinmay235";

我有两个数据库
chinmay235
desarrollo_论坛

我想使用联接查询联接两个表
nuke\u follow\u投票
smf\u成员

nuke_follow_投票
表格存在于
chinmay235
中,而
smf_成员
存在于
Desarrollou论坛
数据库中

代码:

<?php
  $dbhost = "localhost";
  $dbuname = "chinmay_db";
  $dbpass = "2014@movie";
  $dbname = "chinmay235";

  mysql_connect($dbhost,$dbuname,$dbpass) or die(mysql_error());
  mysql_select_db($dbname) or die(mysql_error());

  $qry = mysql_query("SELECT a.* FROM chinmay235.nuke_follow_votes a LEFT JOIN desarrollo_forum.smf_members b ON a.user_id=b.id_member WHERE b.user_id IS NOT NULL;") or die(mysql_error());
  $res=mysql_fetch_row($qry);

  echo "Total Record = ".mysql_num_rows($qry);
?>
我成功地连接了
chinmay235
并获得了表
nuke_follow_投票
,但问题是无法连接第二个数据库


请帮助我如何连接和联接这两个表并获得正确的数据。

MYSQL服务器允许您联接来自不同数据库的表,只要这些数据库位于同一服务器上。连接语法相同;唯一的区别是必须完全指定表名

假设在同一台服务器上有两个数据库——Db1和Db2。Db1有一个名为Clients的表,该表有一个列ClientId,Db2有一个名为Messages的表,该表有一个列ClientId(让我们来说明为什么这些表位于不同的数据库中)

现在,要对上述表执行联接,您将使用以下查询:

假设该帐户具有适当的权限,您可以使用:

    SELECT ...
  FROM A.table t1
  JOIN B.table2 t2 ON t2.column = t1.col

这只是一个权限问题

您的用户似乎无法在数据库desarrollo_论坛上选择表

使用以下命令检查用户的权限

SHOW GRANTS FOR 'chinmay235'@'localhost';

您可以使用.p>语法为联接两个表添加授权

选择
来自表A.A
连接表B.B
按A键=B键


根据您的要求,您可以使用左连接、右连接、完全外部连接、内部连接

查询似乎很好,但您是否限制了desarrollo_forum db的选择权限

试着给第二个db这样的特权

GRANT ALL ON desarrollo_forum.* TO chinmay235@'localhost';
FLUSH PRIVILEGES;

如错误消息中所述,您没有所需的权限。您的用户无权选择表“smf_成员”@Dinistro Yes Authorization my table
smf_成员
OP标记MySql时,您为什么要为SQL Server应答?这里出现相同的错误消息。请您简要解释一下您使用授予desarrollo_论坛上的所有权限。*向用户授予<代码>querygrant完全权限的情况chinmay235@host;检查我发送的页面。这里有一些例子。链接:这适用于单个数据库。但我的要求是如何使用连接查询在两个不同的数据库中获取数据。请再次阅读我的问题。
SELECT*从[MyDatabaseOnDB1].[dbo].[MyTable]tab1左键加入[DB2].[MyDatabaseOnDB2].[dbo].[MyOtherTable]tab2在tab1.ID=tab2.ID上
GRANT ALL ON desarrollo_forum.* TO chinmay235@'localhost';
FLUSH PRIVILEGES;