使用" if - else"读取同一数据库中两个表的数据。

时间:2015-07-15 03:08:45

标签: php mysql

好的家伙我需要一些帮助,重新设置这个以正确格式化。

我有这个代码: (这是访问一个名为"学生"在数据库中的表。)

<?php
require_once('connection.php');
$id = $_SESSION['SESS_MEMBER_ID'];
$result3 = mysql_query("SET NAMES UTF8;");
$result3 = mysql_query("SELECT * FROM students where mem_id='$id'");

while($row3 = mysql_fetch_array($result3))
{ 
    $fname = $row3['fname'];
    $country = $row3['country'];
    $class = $row3['class'];
    $headteacher = $row3['headteacher'];
    $attendance = $row3['attendance'];
    $homework = $row3['homework'];
    $messagestudent = $row3['messagestudent'];
}
?>


<?php
if($class=='K1')
    echo "teacher 1";
else if($class=='K2')
    echo "teacher 2"; 
else if($class=='K3')
    echo "teacher 3";
?>

在另一张桌子上,我有老师的名字和我需要做的事情,我找不到合适的方法,就是从桌子上拨打老师的名字&#34;老师&#34;在查询确认&#34;学生&#34;之后的K1,K2或K3数据之后表格列&#34;类&#34;。

基本上我需要的是改变回声部分的内容,例如,将其从代码中所需的静态数据切换到另一个表中包含的数据。两个表都有一个名为&#34; class&#34;的列,所以如果学生的类列说&#34; K1&#34;我想要这样去检查老师&#34;表格#34;类&#34;并选择匹配&#34; K1&#34;并将其显示在结果回显中,我确信它是可能的,但不是我当前的技能水平。

学生的表结构是:

mem_id, username, password, fname, country, class, attendance, homework, messagestudent

教师的表格结构是:

mem_id, class, name, comment

希望你们对我有所了解!

提前致谢。

PS。我知道该查询使用了已弃用的mysql_,但当我尝试按照指南将其更改为mysqli_时,它从未奏效。

2 个答案:

答案 0 :(得分:0)

您可以使用左连接。尝试使用以下查询:

SELECT * FROM students as st 
LEFT JOIN teachers AS ts 
on st.class=ts.class
WHERE st.mem_id = '$id'

您不需要为此使用if-else语句。它也适用于mysqli。

根据你的脚本,它应该像:

<?php
    require_once('connection.php');
    $id = $_SESSION['SESS_MEMBER_ID'];
    $result3 = mysql_query("SET NAMES UTF8;");
    $result3 = mysql_query("SELECT st.*, ts.name AS teacher_name FROM students as st LEFT JOIN teachers AS ts on st.class=ts.class WHERE st.mem_id = ".$id);
    while($row3 = mysql_fetch_array($result3))
    {
        $fname = $row3['fname'];
        $country = $row3['country'];
        $class = $row3['class'];
        $headteacher = $row3['headteacher'];
        $attendance = $row3['attendance'];
        $homework = $row3['homework'];
        $messagestudent = $row3['messagestudent'];
        $teachername = $row3['teacher_name'];
    }

    echo $class. ' - '. $teachername; 

?>

答案 1 :(得分:0)

如果我理解,你可以通过这个查询获得所需的数据(没有JOIN或if语句):

SELECT students.*,teachers.name FROM students,teachers WHERE students.id='$id' AND students.class = teachers.class

根据学生班级,在同一行返回教师姓名。