Php 通过内部联接从不同表检索值

Php 通过内部联接从不同表检索值,php,inner-join,Php,Inner Join,我无法使用内部联接从不同的表中检索值,输出始终无法检索任何内容。。此外,没有错误消息,我无法确定代码中出现了什么错误。。有人能帮忙吗?我将非常感激。这是我代码的一部分 <?php $con=mysql_connect("localhost","root",""); mysql_select_db("student_records",$con); if(isset($_COOKIE['username'])) { if($_COOKIE['us

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

<?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>";

            }
        }
    }
    ?>

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

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\u课程
    表中没有任何记录,您将无法获得任何数据
  • 如果
    course
    表中不存在
    stud\u course
    中的
    CourseCode
    ,您将无法获得任何数据
  • 如果学生的
    ReligionID
    为空或宗教信仰不在
    religion
    表中,您将无法获得任何数据
我建议将SQL分解成更小的部分(或者可能将每个
内部连接
切换到
左侧外部连接
),以调试并发现问题所在


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

。它们不再得到维护。看到了吗?相反,学习,并使用or-将帮助您决定哪一个。如果你选择PDO,也不要输入大写字母。这是在线版的叫喊。@johncode-你有没有把评论保存在某个地方,剪切粘贴?@jared Farrish。对这里有一个指向Github Gist的链接。请尝试
左连接
而不是
内部连接
。我还应该注意,我个人不喜欢别名表。我觉得在整个SQL语句中使用表名会更清楚。但那只是我,非常感谢。我要试试你的建议。:)有一条错误消息告诉我们索引未定义,它指向这一行。。回显“$row['LName']”、$row['FName']”、$row['MName']”、$row['Course']”、$row['YearLevel']”、“$row['EAdd']”、.$row['ReligionName']”@scott.korin-a+1作为解决方案,我希望我能给你另一个+1作为关于别名的注释。不仅仅是你!别名对于许多操作(例如自联接、作为多个联接目标的表)非常重要,但我看到至少90%的查询不必要地使用它们。@kdot,您的选择列表中没有Course&EAdd。