【发布时间】:2014-02-28 09:10:24
【问题描述】:
我在同一台服务器上有三个数据库。它们是margoplatinum、detos 和plaza。
它们也具有相同的表结构。其中一张表称为movie。
下面是movie表的表结构:
id_movie int(11) PK, AI;
movie_title varchar(100);
status varchar(30);
movie 表中来自margoplatinum 的数据为:
id_movie | movie_tittle | status
--------------------------------------------------
1 | Frozen | Now Playing
2 | The-Amazing-Spidey2 | Coming Soon
movie 表中来自detos 的数据是:
id_movie | movie_tittle | status
--------------------------------------------------
1 | Comic8 | Now Playing
2 | Godzilla | Coming Soon
movie 表中来自plaza 的数据是:
id_movie | movie_tittle | status
--------------------------------------------------
1 | The Killer | Now Playing
2 | Godzilla | Coming Soon
所以我想做的是从上面的三个数据库中选择(在我的 php 代码中并将其转换为 JSON)用于表电影,其中 status = "Now Playing"..
这是我的 php 代码:
<?php
$db_host = "127.0.0.1";
$db_uid = "root";
$db_pass = "";
$db_con = mysql_connect($db_host,$db_uid,$db_pass) or die('could not connect');
$q = mysql_query('SELECT DISTINCT a.id_movie, b.id_movie, c.id_movie, a.movie_tittle,
b.movie_tittle, c.movie_tittle FROM `margoplatinum`.movie a
INNER JOIN `detos`.movie b ON a.id_movie = b.id_movie
INNER JOIN `plaza`.movie c ON b.id_movie = c.id_movie
WHERE a.status = "Now Playing"');
$v = '{"info" : [';
while($r=mysql_fetch_array($q))
{
$ob = array("<br>","<b>","</b>");
if(strlen($v)<12)
{
$v .= '{"id_movie" : "'.$r['id_movie'].'", "movie_tittle" :
"'.$r['movie_tittle'].'"}';
}
else
{
$v .= ',{"id_movie" : "'.$r['id_movie'].'", "movie_tittle" :
"'.$r['movie_tittle'].'"}';
}
}
$v .= ']}';
echo $v;
echo mysql_error();
mysql_close();
?>
但是当我执行上面的php时,发生了错误..这是错误消息:
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\CinemaInfo\list_movie.php on line 17
{"info" : []}Unknown column 'a.status' in 'where clause'
我上面的查询是否正确?或者我的查询做错了什么.. 任何人都可以根据我上面的案例帮助我编写正确的查询吗? 我真的很感谢你的帮助。 谢谢你:)
【问题讨论】:
-
不确定这是否不正确,但您为什么要给
FROM 'margoplatinum'.movie a?不应该只是表名FROM margoplatinum a -
margoplatinum是一个数据库名,如果我想同时连接三个数据库,我必须在table.field之前声明数据库名:)
-
在旁注中,您应该考虑创建 PHP 结果数组,然后使用
json_encode()将其转换为 JSON,而不是手动创建它。然后,在客户端,您只需json_decode()即可取回相同的 PHP 数组。 -
@Fanis 谢谢你的评论:)
标签: php mysql json inner-join multiple-databases