从多个mysql表中获取数据并用PHP(arrray)显示
我有一个带桌子的电影数据库从多个mysql表中获取数据并用PHP(arrray)显示,php,mysql,Php,Mysql,我有一个带桌子的电影数据库 电影表 数据表 人员表 字符表 模式表 电影表 =============================================== CODE : TITLE : DESCRIPTION YEAR ===================================================== 1 IRON MAN 3 xxxxx 2013 2 STAR WARS
===============================================
CODE : TITLE : DESCRIPTION YEAR
=====================================================
1 IRON MAN 3 xxxxx 2013
2 STAR WARS xxxxx 2013
人员表
===============================================
CODE : NAME: BIRTH_DATE
=====================================================
1 SHANE BLACK 1965:04:04 00:00:00
2 ROBERT DOWNEY 1965:04:04 00:00:00
3 Gwyneth Paltrow 1965:04:04 00:00:00
4 Don Cheadle 1965:04:04 00:00:00
字符表
===============================================
PERSON : NAME: MOVIE
=====================================================
2 TONY STARK 1
3 PEPPER POTTS 1
4 Col. James Rhodes 1
模式表
===============================================
CODE : NAME :
=====================================================
1 DIRECTOR
2 WRITER
3 ACTOR
4 CHARACTER
数据表
===============================================
CODE : MOVIE : PERSON MODE
=====================================================
1 1 1 1
2 1 2 3
3 1 3 3
4 1 4 3
最后的答案是:
===============================================
CODE : MOVIE TITLE : DIRECTOR : ACTORS CHARACTERS
=====================================================
1 IRON MAN 3 SHANE BLACK Robert Downey Jr. Tony Stark
Gwyneth Paltrow Pepper Potts
Don Cheadle Col. James
MySQL命令是:
SELECT
movies.title,
movies.year,
persons.name,
modes.name,
persons.birth_date,
characters.name
FROM
data
INNER JOIN movies ON (data.movie = movies.code)
INNER JOIN persons ON (data.person = persons.code)
INNER JOIN modes ON (data.mode = modes.code)
INNER JOIN characters ON (persons.code = characters.person)
AND (characters.movie = data.movie)
WHERE
MOVIES.code = '1'
SQL命令运行良好
我对PHP代码有问题
$movie_query = mysql_query("
SELECT
movies.title,
movies.year,
persons.name,
modes.name,
persons.birth_date,
characters.name
FROM
data
INNER JOIN movies ON (data.movie = movies.code)
INNER JOIN persons ON (data.person = persons.code)
INNER JOIN modes ON (data.mode = modes.code)
INNER JOIN characters ON (persons.code = characters.person)
AND (characters.movie = data.movie)
WHERE
MOVIES.code = '1';");
WHILE ($rows = mysql_fetch_array($movie_query ))
{
$movie_code = $rows['movies'.'code'];
$movies_title = $rows['movies'.'title'];
$movies_year = $rows['movies'.'year'];
$movies_date_add = $rows['movies'.'date_add'];
$movies_tagline = $rows['movies'.'tagline'];
echo "$movie_code<br>$movies_title<br>$movies_year<br>$movies_date_add<br>$movies_tagline<br>";
}
$movie\u query=mysql\u query(“
挑选
电影名称,
电影节,
人名,
模式名称,
个人出生日期,
字符名
从…起
数据
打开内部连接电影(data.movie=movies.code)
内部连接人员(data.person=persons.code)
内部连接模式打开(data.mode=modes.code)
上的内部联接字符(persons.code=characters.person)
和(characters.movie=data.movie)
哪里
MOVIES.code='1';”;
WHILE($rows=mysql\u fetch\u数组($movie\u query))
{
$movie_code=$rows['movies.'code'];
$movies_title=$rows['movies.'title'];
$movies_year=$rows['movies.'year'];
$movies\u date\u add=$rows['movies.'date\u add'];
$movies_tagline=$rows['movies.'tagline'];
echo“$movie\u code
$movies\u title
$movies\u year
$movies\u date\u add
$movies\u tagline
”;
}
我的PHP代码有问题吗。。?(似乎SQL命令与MySQL语法不同)1您需要使用PDO而不是MySQL,请参阅上面的christian giupponi评论,以了解有关该命令的说明 2您的sql语句中有一个“;”应该删除 2查询结果不包括表名 3除非选中,否则无法访问表中的数据,因此除非在sql中请求movies.code,否则$row['code']将不起作用 4当您选择同名字段时,您需要重新分配它们,否则最终会出现错误
$movie_query = mysql_query("
SELECT
movies.code,
movies.title,
movies.year,
persons.name as pname,
modes.name as mname,
persons.birth_date,
characters.name as cname
FROM
data
INNER JOIN movies ON (data.movie = movies.code)
INNER JOIN persons ON (data.person = persons.code)
INNER JOIN modes ON (data.mode = modes.code)
INNER JOIN characters ON (persons.code = characters.person)
AND (characters.movie = data.movie)
WHERE
MOVIES.code = '1'
");
WHILE ($rows = mysql_fetch_array($movie_query ))
{
$movie_code = $rows['code'];
$movies_title = $rows['title'];
$movies_year = $rows['year'];
$movies_date_add = $rows['date_add'];
$movies_tagline = $rows['tagline'];
echo "$movie_code<br>$movies_title<br>$movies_year<br>$movies_date_add<br>$movies_tagline<br>";
}
$movie\u query=mysql\u query(“
挑选
电影。代码,
电影名称,
电影节,
persons.name作为pname,
modes.name作为mname,
个人出生日期,
characters.name作为cname
从…起
数据
打开内部连接电影(data.movie=movies.code)
内部连接人员(data.person=persons.code)
内部连接模式打开(data.mode=modes.code)
上的内部联接字符(persons.code=characters.person)
和(characters.movie=data.movie)
哪里
MOVIES.code='1'
");
WHILE($rows=mysql\u fetch\u数组($movie\u query))
{
$movie_code=$rows['code'];
$movies_title=$rows['title'];
$movies_year=$rows['year'];
$movies\u date\u add=$rows['date\u add'];
$movies_tagline=$rows['tagline'];
echo“$movie\u code
$movies\u title
$movies\u year
$movies\u date\u add
$movies\u tagline
”;
}
祝你好运,请记住,如果你现在不使用PDO,你以后会因为它而受苦的在$movie\u查询中删除;并使用mysql以外的其他工具。启用
错误报告(E\u ALL)
并使用print\r($rows)
查看字段名与循环中使用的字段名有何不同(您在PHP中连接了tablename和column)。@Mihai我理解删除“;”但“使用mysql以外的其他东西”?你是不是建议他换个数据库?为什么会有人投反对票?@mcgrailm他说的是mysqli,因为mysql的功能是不受欢迎的:@mcgrailm是的,我制定了错误的公式,使用mysqli或PDO。这在这个网站上几乎是一个回声,但应该重复,直到每个人都转储mysql api。