2

i have a moviesdb with tables

  1. movies table ;
  2. data table
  3. persons table
  4. characters table
  5. Modes table

MOVIES TABLE

===============================================
CODE : TITLE :        DESCRIPTION       YEAR
=====================================================
1      IRON MAN 3       xxxxx          2013
2      STAR WARS        xxxxx          2013

PERSONS TABLE

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

CHARACTERS TABLE

===============================================
PERSON  : NAME:             MOVIE
=====================================================
2      TONY STARK          1
3      PEPPER POTTS        1
4      Col. James Rhodes   1

MODES TABLE

===============================================
CODE : NAME : 
=====================================================
1      DIRECTOR 
2      WRITER
3      ACTOR
4      CHARACTER

DATA TABLE

===============================================
CODE : MOVIE :     PERSON   MODE
=====================================================
1      1             1       1
2      1             2       3 
3      1             3       3 
4      1             4       3 

FINAL ANSWER WOULD BE like :

===============================================
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 command is :

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;

i am having problem with PHP CODE

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

any problem with my PHP CODE ..? ( seems SQL commands are not same as MySQL syntax )

4

1 回答 1

3

1 你需要使用 PDO 而不是使用 mysql 请参阅上面的 christian-giupponi 评论以获取有关说明

2 你有一个“;” 在应该删除的 sql 语句中

2 你的查询结果不包括表名

3 除非您选择它,否则您无法访问表中的数据,因此 $row['code'] 将不起作用,除非您在 sql 中要求 movies.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>";
}

祝你好运,记住如果你现在不使用 PDO,你以后会受苦的

于 2013-07-28T10:38:58.827 回答