【问题标题】:PHP & mysql display data from multiple tablePHP & mysql 显示来自多个表的数据
【发布时间】:2025-11-23 22:25:01
【问题描述】:

我有两个表,其中包含如下所述的数据:

Table1

TID     Name
 1      Salman 
 2      ABC 
 3      XYZ

表2

SID     STID   SUBJECT
 1       1      English
 2       1      Math
 3       2      Physics
 4       2      Math

Table2 STID 中的 Table1 TID 外键。我想从两个表中收集数据并在 PHP 中显示如下:

Name        Subject1    Subject2
Salman      English     Math
ABC         Physic      Math

【问题讨论】:

  • 相同的列名在table2中无效TTID
  • 我已经更新了问题。
  • 好的,你会得到与用户主题相同的列,但你不能像主题1、主题2等那样得到它。
  • *.com/questions/37027062/…此链接可能对您有所帮助。
  • @SalmanKarim 你能解释一下 subject1 和 subject2 的概念吗??

标签: php mysql


【解决方案1】:

有我的建议算法

$mysqli = new mysqli("HOST", "USER NAME", "USER PASS", "YOUR DATABASE");
$result = $mysqli->query("SELECT * FROM table1");
while ($row = $result->fetch_assoc()){
$TID = $row['TID'];
$Name = $row['Name'];
$result2 = $mysqli->query("SELECT * FROM table2 where `TTID` = $TID");
echo "$Name \t";
while ($row2 = $result2->fetch_assoc()){
$SUBJECT = $row2['SUBJECT'];
echo "$SUBJECT \t";
}
echo '<br/>';
}
$mysqli->close();

【讨论】:

  • 您可以根据自己的需求更改代码结构
  • 另外我在你的第一个示例中将第一个 TTID 更改为 T2ID
  • 我正在尝试你的建议,很快就会告诉你
  • @SalmanKarim 如果您需要更多信息,请随时与我联系
【解决方案2】:

如果您知道可以分配给学生的最大科目数,

请检查此查询

SELECT A.Name  , 
(SELECT subject from Table2 where STID = A.TID limit 0,1 ) as SUBJECT1,
(SELECT subject from Table2 where STID = A.TID limit 1,1 ) as SUBJECT2
FROM  Table1 A

【讨论】:

    最近更新 更多