Php 我需要从附有日期的数据库表中按日期筛选产品。这将添加到下拉菜单中

Php 我需要从附有日期的数据库表中按日期筛选产品。这将添加到下拉菜单中,php,sql,Php,Sql,修改没有乐趣,但我不认为我们离得太远。我可以改进什么 <div class="dropdown"> <button class="dropbtn">Date</button> <div class="dropdown-content"> <?php $d = strtotime("today"); ?>

修改没有乐趣,但我不认为我们离得太远。我可以改进什么

<div class="dropdown">
                <button class="dropbtn">Date</button>
                <div class="dropdown-content">       
                    <?php $d = strtotime("today"); ?>
                    <a href="?date=lastWeek"><option value="1">Last 7 days</option></a>
                    <a href="?date=lastMonth"><option value="2">Last 30 days</option></a>
                    <a href="?date=date"><option value="3">Last 3 months</option></a>
                    <a href="?date=date"><option value="4">Last 12 months</option></a>

                </div>
            </div>

if (isset($_GET["date"])) {
            $date = ($_GET['date']);
            $sql = "SELECT * FROM tblproduct WHERE date created BETWEEN '2017-08-18' AND '$d'" . $date . "'";
        } else {
            $sql = "SELECT * FROM tblproducts ORDER BY id ASC";

日期
如果(isset($_GET[“date”])){
$date=($_GET['date']);
$sql=“从tblproduct中选择*,其中日期创建在“2017-08-18”和“$d”之间。$date。””;
}否则{
$sql=“按id ASC从TBL产品订单中选择*”;

您需要转义日期参数并引用它,或者使用绑定参数,这样更安全

if (isset($_GET["date"])) {
    $date = mysqli_real_escape_string($_GET['date']);
    $sql = "SELECT * FROM tblproduct WHERE date = '" . $date . "'";
} else {
    $sql = "SELECT * FROM tblproducts ORDER BY id ASC";
}
或者,如果您正在使用PDO:

if (isset($_GET["date"])) {
    $sql = "SELECT * FROM tblproduct WHERE date = :date";
    $connection->prepare($sql);
    $connection->bindParam(':date', $_GET['date']);
} else {
    $sql = "SELECT * FROM tblproducts ORDER BY id ASC";
}

您需要转义date参数并引用它,或者使用绑定参数,这样更安全

if (isset($_GET["date"])) {
    $date = mysqli_real_escape_string($_GET['date']);
    $sql = "SELECT * FROM tblproduct WHERE date = '" . $date . "'";
} else {
    $sql = "SELECT * FROM tblproducts ORDER BY id ASC";
}
或者,如果您正在使用PDO:

if (isset($_GET["date"])) {
    $sql = "SELECT * FROM tblproduct WHERE date = :date";
    $connection->prepare($sql);
    $connection->bindParam(':date', $_GET['date']);
} else {
    $sql = "SELECT * FROM tblproducts ORDER BY id ASC";
}

您可以向我们展示此操作的完整代码吗?引发错误的位不在您的代码示例中。此外,将GET参数直接注入查询会使您面临SQL注入攻击。请看一下如何避免这种情况:您可以向我们展示此操作的完整代码吗?引发错误的位不在您的代码示例中。此外,将GET参数直接注入查询会使您面临SQL注入攻击。请看一下如何避免这种情况: