有mysql查询的困难

时间:2017-02-24 00:05:09

标签: php mysql sql mysqli

Image。 我一直在研究这个应用程序,我有一些小问题。 MySQL查询是基本的,一切都在继续。我将放置代码,我将上传图片给您,以查看此问题的结果。所以基本上我希望查询只显示来自那个" id"我从GET方法得到了。因此,它打印出来自databasem的每一件东西并不重要。但是那些不是GET" id"的专栏是空白的。我希望他们消失并只显示与get id匹配的事先谢谢你。

<?php
require_once 'requires/dbconnect.php';
require_once 'requires/session.php';
require_once "requires/head.php";
require_once 'requires/navbar.php';

$id = $_GET['id'];

$query = $DBcon->query("SELECT * FROM borrow
                            LEFT JOIN users ON borrow.member_id = users.id   AND borrow.member_id = '$id'
                            LEFT JOIN borrowdetails ON borrow.borrow_id = borrowdetails.borrow_id AND borrowdetails.member_id = '$id'
                            LEFT JOIN book ON borrowdetails.book_id =  book.book_id
                            ORDER BY borrow.borrow_id DESC");
    ?>
    <div class="container">
    <table class="table table-hover table-bordered">
    <tr class="active">
        <td><b>Book Title</b></td>
        <td><b>Username</b></td>
        <td><b>Date Borrowed</b></td>
        <td><b>Date Returned</b></td>
        <td><b>Status</b></td>
        <td></td>
    </tr>
    <tr>
    <?php
    while ($row = $query->fetch_array()) {
        $id                = $row['borrow_id'];
        $member_id         = $row['member_id'];
        $book_id           = $row['book_id'];
        $borrow_details_id = $row['borrow_details_id'];
        ?>
                                <td><a href="bookbrief.php?id=<?php echo $book_id; ?>"><?php echo $row['book_title']; ?></a></td>
                                <td><a href="profile.php?id=<?php echo $member_id; ?>"><?php echo $row['username']; ?></a></td>
                                <td><?php echo $row['date_borrow']; ?></td> 
                                <td><?php echo $row['date_return']; ?> </td>
                                <td><?php echo $row['borrow_status'];?></td>
                                <?php
                                if($row['borrow_status'] == 'pending')
                                { ?>
                                    <td class="danger">Pending</td>
                                <?php }
                                else if ($row['borrow_status'] == 'returned') { ?>
                                    <td class="success">Returned</td>
                                <?php } ?> 

                                </tr>
    <?php } ?>
    </table>
    </div>`

1 个答案:

答案 0 :(得分:1)

我在所有JOIN之后都没有看到WHERE子句。

WHERE borrow.member_id=$id;

(这不是你应该写入查询的内容。出于安全原因,你需要验证/清理/参数化$ _GET。)

对于您的情况,这一次,在将其放入查询之前,您可以放弃这样的清理:

$id = intval($_GET['id']);

...但是肯定会读到参数化。