如何显示第一个表中的记录并匹配第二个表中的记录?

时间:2019-06-26 18:44:11

标签: php mysql codeigniter-3

我有两个表,一个用于学生详细信息,第二个用于stud_marks。

我正在像这样在学生表中插入个人信息

  s_id  | name   | mobile     | email  
    1   | asdff  |1234567831  |asd@gmail.com
    2   | kjhgg  |1231231231  |mnhg@gmail.com
    <!--many more-->

我要插入学生标记

m_id    |sub_name    |mark       | stu_id    |date_of_added
1       |asdasd      |30         | 1       |2019-06-16 17:31:07
2       |oiuytr      |40         | 1       |2019-06-16 17:31:07
3       |okjhyt      |50         | 2       |2019-06-20 20:12:09
4       |ppoiuj      |60         | 1       |2019-06-22 11:41:34
<!--many more--> 

现在,我必须使用哪些查询并显示单个记录。就像我必须显示学生1记录。所以我的预期输出是

 s_id  | name   | mobile     | email  
   1   | asdff  |1234567831  |asd@gmail.com


m_id    |sub_name    |mark       | stu_id    |date_of_added
1       |asdasd      |30         | 1       |2019-06-16 17:31:07
2       |oiuytr      |40         | 1       |2019-06-16 17:31:07
4       |ppoiuj      |60         | 1       |2019-06-22 11:41:34

我在编辑页面上,在那里我必须显示类似的记录

name:-asdff
mobile:-1234567831
Email:-asd@gmail.com

<!--subject details-->
Sub_name Mark
asdasd   30         
oiuytr   40
ppoiuj   60      

我可以在HTML页面上显示记录。显示个人信息。我可以使用它们来显示主题详细信息。

我正在使用CodeIgniter。

我在下面的查询中尝试过,但是却得到3条记录。

SELECT * FROM `student` LEFT JOIN stud_marks ON student.s_id=stud_marks.stu_id WHERE student.s_id=1

查询的输出是

1 asdff 1234567831 asd@gmail.com 1 asdasd 30 1 2019-06-16 17:31:07

1 asdff 1234567831 asd@gmail.com 2 asdasd 40 1 2019-06-16 17:31:07

1 asdff 1234567831 asd@gmail.com 4 asdasd 60 1 2019-06-22 11:41:34

您能帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

尝试一下:

//assuming your database connection will be in $con
$sql="SELECT * FROM `student` LEFT JOIN stud_marks ON   student.s_id=stud_marks.stu_id WHERE student.s_id=1";
 $result=mysqli_query($con,$sql);
 while($row = $result->fetch_assoc()){
 $name=$row['name'];
 $mobile=$row['mobile'];
 $email=$row['email'];
 $marks[]=$row['mark'];
 $sub_names[]=$row['sub_name'];
 }
 $records=count($sub_names);
 echo 'Name :'.$name; echo '<br>';
 echo 'Mobile :'.$mobile; echo '<br>';
 echo 'Email :'.$email; echo '<br>';
 echo '------'; echo '<br>';
 echo 'Subject    Marks'; echo '<br>';
 for ($x = 0; $x <= $records; $x++) {
 echo "$sub_names[$x]  $marks[$x]   <br>";
 }
 echo '------'; echo '<br>';

CodeIgniter示例以提取数据:

$query = $this->db->query("YOUR QUERY");

foreach ($query->result_array() as $row)
{
        $name=$row['name'];
        $mobile=$row['mobile'];
        $email=$row['email'];
        $marks[]=$row['marks'];
        $sub_names[]=$row['sub_names'];
}

为显示结果,在上一个示例中,从$records=count($sub_names)开始的代码没有变化。