2013-07-28 37 views
2

我有表得到从多个MySQL表和显示数据在PHP(arrray)

  1. 电影表moviesdb;
  2. 数据表
  3. 者表
  4. 字符表
  5. 模式表

MOVIES TABLE

=============================================== 
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 

FINAL答案将是这样的:

=============================================== 
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 Command WORKS fine;

我有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>"; 
} 

任何问题问题,我的PHP代码..? (似乎SQL命令不一样的MySQL语法)

+0

in $ movie_query remove;并使用除mysql以外的其他内容。 – Mihai

+0

启用'error_reporting(E_ALL);'并使用'print_r($ rows)'来查看字段名称与循环中使用的不同(您将PHP中的表名和列连接起来)。 – mario

+0

@Mihai我明白删除“;”但“使用别的不是MySQL”?你是否建议他使用不同的数据库? 和所有为什么倒票? – mcgrailm

回答

3

1你需要使用的,而不是用mysql见上基督教giupponi意见,对

2 insturctions PDO你有“;”在应该删除

2查询的结果不包括表名的SQL statment

3,除非你选择它,$行,你不能访问表中的数据[“代码”]除非你要求movies.code在SQL

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>"; 
} 

好运气是行不通的,并请记住,如果您现在不使用PDO,您将因此受到影响ter

+1

作品像一个魅力 – user2573165