Tob*_*ith 2 mysql sql pdo join
嗨,我正在尝试编写 SQL 语句来填充表,但我不断收到错误消息:
未定义索引:st.Name,和未定义索引:s.Name。
我不明白为什么我会得到它,因为我在 SQL 语句中选择了它们。我不太擅长 SQL,因此将不胜感激。
<?php
ini_set("display_errors", 1);
try{
$stmt = $conn->prepare(
"SELECT st.Name, s.Name
From Sports AS s INNER JOIN Choices AS c
ON s.Sport_ID = c.Sport_ID INNER JOIN Student_Choices AS sc
ON sc.T1_Choice = c.Choice_ID INNER JOIN Students AS st
ON st.Username = sc.Username
");
$stmt->execute();
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo '<tr>
<td>'.$row['st.Name'].'</td>
<td>'.$row['s.Name'].'</td>
</tr>
';
}
}
catch(PDOException $e)
{
echo "error".$e->getMessage();
}
?>
Run Code Online (Sandbox Code Playgroud)
有多个问题。首先,您假设您将能够使用<table/alias-name>.<column/alias-name>. 相反,它们只能使用列名或定义的别名来访问。
现在,在这种情况下,您有两个名称相同的列。因此,您应该为它们定义不同的别名,以避免产生歧义。我已经定义了它们student_name和sport_name.
定义别名后,您现在可以仅使用别名访问这些列值。
$stmt = $conn->prepare(
"SELECT st.Name AS student_name,
s.Name AS sport_name
From Sports AS s INNER JOIN Choices AS c
ON s.Sport_ID = c.Sport_ID INNER JOIN Student_Choices AS sc
ON sc.T1_Choice = c.Choice_ID INNER JOIN Students AS st
ON st.Username = sc.Username
");
$stmt->execute();
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo '<tr>
<td>'.$row['student_name'].'</td>
<td>'.$row['sport_name'].'</td>
</tr>
';
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
342 次 |
| 最近记录: |