dongxia2030
2018-06-14 12:24
浏览 120
已采纳

为什么SQL INNER JOIN返回所有记录而不考虑条件

I have two tables users and test. The users table contains the information about student and test table has its test details. I want to show all the details of test to the specific student after login according to his roll number. For achieving this, I have tried using following foreach function and INNER JOIN in the query.

<?php 
      foreach($conn->query('SELECT test.date, test.sub,test.topic,test.marks,test.rank FROM test JOIN users ON test.rollno=users.rollno order by date desc')as $row){ ?>
        <button class="accordion"><b>Test on <?php echo date('d-m-Y', strtotime( $row['date'] )); ?></b></button>
          <div class="panel">
           <p>
           <table border="1">
            <?php
            echo "<tr><td>Date: " . date('d-m-Y', strtotime( $row['date'] )) . "</td></tr>";
            echo "<tr><td>Subject: " . $row['sub'] . "</td></tr>";
            echo "<tr><td>Topic: " . $row['topic'] . "</td></tr>";
            echo "<tr><td>Marks: " . $row['marks'] . "</td></tr>";
            echo "<tr><td>Rank: " . $row['rank'] . "</td></tr>"; ?>
         </table>
            </p>
          </div>
      <?php }?>   

This returns all the test records regardless of roll no. I have rollno column common in both table. I want the query to show records matching the current roll number. Please help.

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • dongqianwei6664 2018-06-14 14:21
    已采纳

    It solved by just changing the query as SELECT test.date, test.sub,test.topic,test.marks,test.rank FROM test JOIN users USING(rollno) WHERE rollno='.$userRow['rollno'].' order by date desc where, $userRow['rollno'] is a session variable which contains the value of roll no. of currently logged in user.

    评论
    解决 无用
    打赏 举报
查看更多回答(1条)

相关推荐 更多相似问题