Mysql 使用内部join SQL语句时未定义索引
您好,我正在尝试编写SQL语句来填充表,但我一直收到一个错误: 未定义索引:st.Name,未定义索引:s.Name 我不明白为什么会这样,因为我在SQL语句中选择了它们。我对SQL不是很在行,因此希望能得到帮助Mysql 使用内部join SQL语句时未定义索引,mysql,sql,join,pdo,Mysql,Sql,Join,Pdo,您好,我正在尝试编写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
<?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();
}
?>
存在多个问题。首先,您的假设是错误的,即您将能够使用
访问这些列值。相反,它们只能使用列名或定义的别名进行访问
现在,在本例中,您有两个同名的列。因此,您应该为它们定义不同的别名,以避免模棱两可的行为。我已经定义了student\u name
和sport\u 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>
';
}
$stmt=$conn->prepare(
“选择st.Name作为学生姓名,
s、 名称为运动名称
从体育作为s的内部连接选择作为c
关于s.Sport\u ID=c.Sport\u ID内部连接学生选择作为sc
关于sc.T1_Choice=c.Choice_ID内部加入学生作为st
ON st.Username=sc.Username
");
$stmt->execute();
而($row=$stmt->fetch(PDO::fetch\U ASSOC)){
回声'
“.$row['student_name']”
“.$row['sport_name']”
';
}
或者更好的称呼他们学生
和运动
;)谢谢你,我还有两个运动项目T2和T3。如何实现这些,因为它们也将作为s返回_name@TobyDixonSmith顺便说一句,你可以为另外两项运动使用不同的别名;它们没有使用相同别名的限制