0

我无法使用内部联接从不同的表中检索值,输出始终不检索任何内容。此外,没有错误消息,我无法确定代码中出了什么问题。有人可以帮忙吗?我会非常感激。这是我的代码的一部分..

<?php
    $con=mysql_connect("localhost","root","");
    mysql_select_db("student_records",$con);
    if(isset($_COOKIE['username']))
    {
        if($_COOKIE['username']!='admin')
        {
            $tbl6=mysql_query("SELECT A.LName, A.FName, A.MName, B.YearLevel
            FROM student as A INNER JOIN stud_course as B ON A.StudNo=B.StudNo INNER JOIN course as C ON B.CourseCode=C.CourseCode INNER JOIN religion as D ON A.ReligionID=D.ReligionID
            WHERE A.StudNo = '".mysql_real_escape_string($_COOKIE['username'])."' ");
            while($row=mysql_fetch_array($tbl6))
            {
                echo "<td>".$row['LName']."</td><td>".$row['FName']."</td><td>".$row['MName']."</td><td>".$row['Course']."</td><td>".$row['YearLevel']."</td><td>".$row['EAdd']."</td><td>".$row['ReligionName']."</td></tr>";

            }
        }
    }
    ?>
4

1 回答 1

2

内部联接要求联接中包含的两个表中都存在数据。在您的情况下,您有四个表,其中任何一个表都可能缺少相关数据:

SELECT A.LName, A.FName, A.MName, B.YearLevel, C.Course
FROM student as A 
INNER JOIN stud_course as B ON 
    A.StudNo=B.StudNo 
INNER JOIN course as C ON 
    B.CourseCode=C.CourseCode 
INNER JOIN religion as D ON A.ReligionID=D.ReligionID
WHERE A.StudNo = '".mysql_real_escape_string($_COOKIE['username'])."' "
  • 如果student表中没有与StudNo用户名 cookie 相等的记录,您将得不到任何数据。
  • 如果学生在表中没有任何记录stud_course,您将得不到任何数据。
  • 如果CourseCodeinstud_course在表中不存在course,您将得不到任何数据。
  • 如果学生的ReligionID为 null 或具有不在religion表中的宗教,您将不会获得任何数据。

我建议将 SQL 分解成更小的部分(或者可能将每个部分切换INNER JOINLEFT OUTER JOIN)以调试并发现问题所在。

请注意,如果您要尝试使用它,您必须确保将Courseand (不确定来自哪个表)字段添加到您的选择列表中。Eadd

于 2013-03-12T01:43:15.393 回答