簡體   English   中英

如果保存日期超過1年,則從mysql進行PDO查詢行

[英]PDO Query row from mysql if date saved is more than 1 year

我知道必須有100個不同的按日期搜索的示例,但是它們不起作用,並且我無法弄清楚代碼! 我有一個表格,其中可以保存名稱和將來的日期。 該日期由用戶保存,並且在varchar字段中為mm-dd-YYYY,盡管我可以根據需要進行更改。 (建議表示贊賞)。

我需要根據日期查詢用戶名,以發送提醒電子郵件。 例如,向自保存之日起超過一年的電子郵件發送給他們。 到目前為止,我所要做的就是選擇所有內容並嘗試過濾日期,但這很混亂,我只是將其全部刪除並寫下了這個問題。 有人可以幫忙嗎?

現在我有

$date = date('m-d-Y');

$query = "SELECT username FROM users WHERE thedate > 1year FROM $date"
    // I know this is horribly wrong

// $query_params = array( ':username' => $email );

        try {
            // These two statements run the query against your database table. 
            $stmt   = $db->prepare($query);
            $result = $stmt->execute($query_params);
        }
            catch (PDOException $ex) {

        }

        $rows = $stmt->fetchALL();
        foreach ($rows as $row) {

        $username = $row['username'];

}

可能有5個名稱或500個名稱,因此在將它們附加到電子郵件之前,我需要先從數據庫中過濾掉它。 謝謝!

最好更改數據庫中的類型,但是您可以在PHP中將其過濾掉。

您可以通過創建1年的時間,然后將每一行與時間進行比較來做到這一點。 它不能很好地擴展,但是會過濾名稱。

它看起來像:

$query = "SELECT username,thedate FROM users WHERE thedate > 1year From now()";
// I know this is horribly wrong

// $query_params = array( ':username' => $email );

try {
    // These two statements run the query against your database table. 
    $stmt = $db->prepare($query);
    $result = $stmt->execute($query_params);
} catch (PDOException $ex) {

}

$rows = $stmt->fetchALL();
$time = strtotime("+1 year"); // Create the day 1 year out
$result = array();
foreach ($rows as $row) {
    // If the database date is greater than 1-year out, add it to the result array
    if ($time < strtotime($row['thedate']))
        $result[] = $row;
}

如果更改列類型,則還可以創建參數並在where子句中使用mysql函數FROM_UNIXTIME

$oneyearahead = strtotime("+1 year");
$query = "SELECT username FROM users WHERE thedate > FROM_UNIXTIME($oneyearahead)";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM