You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP MySQL关联表查询问题:显示学生ID而非姓名

解决查询结果显示学生ID而非姓名的问题

看起来你遇到了关联表查询的小问题——当前的SQL只从times表获取数据,而student字段存储的是关联students表的ID,所以输出的是数字ID而非学生姓名。咱们只需要两步就能搞定:

第一步:修改SQL查询语句,关联两张表

使用INNER JOIN(如果要包含无对应学生的记录可以用LEFT JOIN)把times和students表关联起来,这样就能同时获取时间记录和对应的学生姓名:

SELECT t.id, t.time, t.date, t.notes, s.firstName, s.lastName 
FROM times t
INNER JOIN students s ON t.student = s.ID

这里给表起了别名t(代表times)和s(代表students),让SQL代码更简洁易读。

第二步:更新PHP输出逻辑,显示学生姓名

把原来输出$row["student"]的地方,改成输出学生的全名(firstName + lastName):

<?php 
$sql = "SELECT t.id, t.time, t.date, t.notes, s.firstName, s.lastName 
        FROM times t
        INNER JOIN students s ON t.student = s.ID";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        echo "id: " . $row["id"]. " - Student: " . $row["firstName"] . " " . $row["lastName"]. " - Time: " . $row["time"]. " - Date: ".$row["date"]. " - Notes: ".$row["notes"]."<br>";
    }
} else {
    echo "0 results";
}
$conn->close(); 
?>

完整的修改后代码

把数据库连接和查询部分整合在一起,就是这样:

<?php 
$servername = "localhost"; 
$username = "root"; 
$password = ""; 
$dbname = "timedrun"; 

$conn = new mysqli($servername, $username, $password, $dbname); 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} else { 
    echo "Connected successfully<br>"; 
} 
?>

<?php 
$sql = "SELECT t.id, t.time, t.date, t.notes, s.firstName, s.lastName 
        FROM times t
        INNER JOIN students s ON t.student = s.ID";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        echo "id: " . $row["id"]. " - Student: " . $row["firstName"] . " " . $row["lastName"]. " - Time: " . $row["time"]. " - Date: ".$row["date"]. " - Notes: ".$row["notes"]."<br>";
    }
} else {
    echo "0 results";
}
$conn->close(); 
?>

补充说明

  • INNER JOIN只会返回两张表中匹配成功的记录,也就是只有当times表的studentID在students表中存在时才会显示。
  • 如果你的times表中有student字段为NULL的记录,想要保留这些记录的话,把INNER JOIN改成LEFT JOIN即可,此时姓名部分会显示为空字符串。

内容的提问来源于stack exchange,提问作者Blatherwick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:18:30