2017-08-25 8 views
1

変更されました私はあまりにも遠く離れているとは思わない。私は何を改善することができますか?日付が付いたデータベーステーブルから日付で製品をフィルタリングする必要があります。これはドロップダウンメニューに追加されます

<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"; 
+0

を、あなたは私たちに、このためのあなたの完全なコードを示してもらえますか?エラーをスローするビットは、コードサンプルにありません。 – Bananaapple

+0

また、GETパラメータをクエリに直接注入すると、SQLインジェクション攻撃が広く行われます。それを避ける方法をここで見てください:https://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php – Bananaapple

答えて

0

日付パラメータをエスケープして引用するか、より安全なバインドされたパラメータを使用する必要があります。

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"; 
} 
関連する問題