【问题标题】:Displaying PHP Many to Many Relationship显示 PHP 多对多关系
【发布时间】:2016-12-04 08:19:21
【问题描述】:

大家好,我是 php 新手,所以这是我的代码,我在做学生信息系统时无法在多对多关系中显示 php

这是我的数据库

学生
student_id
名称
地址
课程

主题
subject_id
主题名称
主题代码

student_subject
subject_id
学生编号

这是我的查询

$sql = "SELECT subject_name
        FROM   subject
             LEFT JOIN student_subject ON (student.student_id = 'student_id')
                    LEFT JOIN subject ON (subject.subject_id = 'subject_id' )";

$records = mysql_query($sql);

现在这是我的代码来显示它请帮助我如何显示这个例子我只想显示主题名称和主题代码

while($student=mysql_fetch_array($records)){

      echo $student['subject_name'];
      echo $student['subject_code'];
}

这只是示例,因为这只是我想要显示的内容,请帮助我,感谢抱歉我的英语不好。无法搜索关于在谷歌中显示多对多关系的任何内容我可以看到一些查询,但我无法搜索我尝试了很多但我总是失败的代码非常感谢您

期望的输出:

主题名称 ---|--- 主题代码
信息通信技术___________||__________IT 101
代数_______||_________ MATH101

删除视觉中的下划线无法修复stackoverflow中的新输出

【问题讨论】:

  • 如果你想显示每个学生的科目,你需要从student_select中选择find by student_id,你需要选择subject_name。
  • 请告诉我们您想展示什么?
  • 请添加一些所需输出的示例
  • 另请注意,mysql_* 函数自 5.5 起已弃用,并在 7.0 中删除。请改用 mysqli 或 PDO。
  • 我想显示对应的科目,以学生为例,学生参加计算机课和数学课学生 10002 参加数学和计算机我想显示计算机和数学课?我该怎么做谢谢?

标签: php


【解决方案1】:
<?php

$con = mysql_connect("localhost", "root", "") or die('There is an error to connect DB' . mysql_error());

mysql_select_db('test') or die ('Unable to select DB' . mysql_error());

$query = 'SELECT ST.student_id, ST.name, ST.address, SB.subject_name, SB.subject_code FROM student ST, subject SB, `student_subject` STSB WHERE STSB.student_id=ST.student_id AND STSB.subject_id=SB.subject_id';

$query = mysql_query($query) or die('Unable to execute query' . mysql_error());

if ($query) {
    $str = '';
    $header = '<tr><td>Student ID</td><td>Name</td><td>Address</td><td>Subject</td><td>Subject Code</td></tr>';
    while ($row = mysql_fetch_array($query)) {
        $str .= '<tr>';
        $student_id = $row['student_id'];
        $name = $row['name'];
        $address = $row['address'];
        $subject = $row['subject_name'];
        $subject_code = $row['subject_code'];

        $str .= '<td>' . $student_id . '</td>';
        $str .= '<td>' . $name . '</td>';
        $str .= '<td>' . $address . '</td>';
        $str .= '<td>' . $subject . '</td>';
        $str .= '<td>' . $subject_code . '</td>';
        $str .= '</tr>';
    }
    if ($str) {
        $table = '<table border="1">' . $header      . $str . '</table>';
    } else {
        $tdata = '<tr><td colspan="5">No data found</td></tr>';
        $table = '<table border="1">' . $header . $tdata . '</table>';
    }
    echo $table;
}

输出将是这样的:

【讨论】:

  • 非常感谢 :) 您从哪里获得查询中的 ST?
  • 是表名吗??还是数据库名称?
  • ST 是在 FROM sql 子句中为学生表定义的别名,例如“FROM student ST”。您可以为表格等属性定义别名,这样您就可以快速而简短地引用它,而无需重写整个表格名称。示例:STSB.student_id = ST.student_id *是最短的然后 student_subject.student_id = student.student_id
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-29
  • 1970-01-01
  • 2021-11-13
  • 1970-01-01
  • 1970-01-01
  • 2019-04-22
相关资源
最近更新 更多