簡體   English   中英

如何從數據庫中按月或年搜索/過濾

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

我想使用下拉搜索按鈕根據月份或年份過濾報告。 我有問題,因為無法顯示正在搜索的月份數據。

這是我嘗試過的一些代碼:

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>

您忘記了執行查詢。
請改用PDO
您的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['']"
}

您應該在收到任何結果之前執行查詢。
您的$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