简体   繁体   English

如何从数据库中按月或年搜索/过滤

[英]How to search/filter by month or year from database

I want to filter the report based on month or year using dropdown search button. 我想使用下拉搜索按钮根据月份或年份过滤报告。 I'm having problem because the data for month that being search cannot be displayed. 我有问题,因为无法显示正在搜索的月份数据。

Here are some codes that I've tried: 这是我尝试过的一些代码:

if(!empty($_POST['search'])){
  $sql = "SELECT * FROM complain
        WHERE MONTH(timeComplain)='".$_POST['search']."'";
  $query = $conn -> query($sql);
  $row = $query -> fetch_assoc();
}
<form action="report.php" method="post">
  <div class="w3-left">
    <select name="search" class="w3-select" value="">
        <option value=""></option>
        <option value="1">January</option>
        <option value="2">February</option>
        <option value="3">March</option>
        <option value="4">April</option>
        <option value="5">May</option>
        <option value="6">June</option>
        <option value="7">July</option>
        <option value="8">August</option>
        <option value="9">September</option>
        <option value="10">October</option>
        <option value="11">November</option>
        <option value="12">December</option>
    </select>
   <input type="submit" id="search" value="Filter">              
  </div>
</form>

You forgot to execute the query. 您忘记了执行查询。
Use PDO instead. 请改用PDO
Your PHP code should look like this: 您的PHP代码应如下所示:

if(!empty($_POST['search'])){
  $sql = "SELECT * FROM complain WHERE MONTH(timeComplain)= :month";
  $query = $conn->prepare($sql);
  $params = array(':month' => $_POST['search']);
  $query->execute($params);
  $row = $query->fetch();
  // then you can do "echo $row['']"
}

You should execute the query before any results are received. 您应该在收到任何结果之前执行查询。
Your $conn should look like this: 您的$conn应该如下所示:

$options = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'); 

try { $conn = new PDO("mysql:host={$host};dbname={$dbname};charset=utf8", 
$username, $password, $options); } 
catch(PDOException $ex){ die("Failed to connect to the database: " . $ex->getMessage());} 
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
$conn->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM