从当天开始的特定天数内从sql db检索条目的函数

时间:2013-02-10 02:28:32

标签: php sql

我正在编写一个函数,用于检索属于当前日期指定日期范围内的四个特定列之一中的所有条目。 IE浏览器。列包含到期日期,我希望能够显示从当前日期起30,60,90天内到期的条目。我很难解决你可以提供的任何帮助我会非常感激。另外请不要给我准备好的声明和PDO演讲,我很清楚它和它的需要,但这不是外部消费所以sql注入不是一个问题,而且过于复杂,这对我来说是适得其反的。

这是我到目前为止所拥有的。

// list_entries_set function lists all entries expiring in the next $days
function list_entries($days) {
    if(!$days) $days = "365";

    $today = date('Y-m-d');
    $end_day = strtotime(date("Y-m-d", strtotime($end_day)) . " + '.$days.'day");

    db_connect();

    $orderby = $_GET["orderby"];
    $sql = mysql_query("SELECT * FROM table WHERE column BETWEEN ".$today." AND ".$end_day."  ORDER BY ".$orderby);

    while($row = mysql_fetch_array($sql)) {
        echo "table outputs : purged because it's irrelevant and lengthy";
    }

    echo "</table>";
    db_disconnect();
}

2 个答案:

答案 0 :(得分:1)

SELECT * FROM table WHERE column BETWEEN NOW() AND NOW() + INTERVAL :duration DAY LIMIT ORDER BY :order;

使用准备好语句的引擎来解析占位符。 ext/mysql不再是一个选项。

答案 1 :(得分:0)

从当前日期起30,60或90天内到期的条目的sql将是这样的;

select item
, case when datediff(expiry_date, current_date) <= 30 then 'within 30'
when datediff(expiry_date, current_date) <= 60 then 'within 60'
else 'within 90'
end whatever_you_want_to_call_this
from your_tables_joining_if_necessary
where expiry_date >= current_date
and expiry_date < date_add(current_date, 91, days)

mysql的语法可能不正确。我不使用它而只是查看手册。