Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 函数可在从当前日期起的一定天数内从sql db检索条目_Php_Sql - Fatal编程技术网

Php 函数可在从当前日期起的一定天数内从sql db检索条目

Php 函数可在从当前日期起的一定天数内从sql db检索条目,php,sql,Php,Sql,我正在编写一个函数,用于检索从当前日期起在指定日期范围内的四个特定列之一中的所有条目。即,列包含到期日期,我希望能够显示从当前日期起30,60,90天内到期的条目。我有点不太明白。如果您能提供任何帮助,我将不胜感激。另外,请不要给我准备好的语句和PDO讲座,我很清楚它和它的必要性,但这不是为了外部消费,所以sql注入不是一个问题,过于复杂对我来说会适得其反 这是我到目前为止所拥有的 // list_entries_set function lists all entries expiring i

我正在编写一个函数,用于检索从当前日期起在指定日期范围内的四个特定列之一中的所有条目。即,列包含到期日期,我希望能够显示从当前日期起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();
}
//list\u entries\u set函数列出在接下来$days内过期的所有条目
功能列表\u条目(天){
如果(!$days)$days=“365”;
$today=日期('Y-m-d');
$end_day=strotime(日期(“Y-m-d”),strotime($end_day)).“+”.$days.“day”);
db_connect();
$orderby=$_GET[“orderby”];
$sql=mysql\u查询(“从表中选择*,其中列介于“$today.”和“$end\u day.”之间,“$orderby”。$orderby”);
while($row=mysql\u fetch\u数组($sql)){
echo“表输出:已清除,因为它不相关且冗长”;
}
回声“;
db_disconnect();
}

使用支持预处理语句的引擎解析占位符
ext/mysql
不再是一个选项。

对于从当前日期起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)
选择项目

,datediff(到期日,当前日期)“sql注入对我来说不是问题”的情况下,你在开玩笑吗?特别是因为预先准备好的语句(除了安全问题)使事情变得更简单。另外:
ext/mysql
已经过时,不再维护,并且被标记为不推荐使用PHP5.5。使用
PDO_-MYSQL
,或
MySQLi
。如果你真的相信SQL注入不是一个问题,你需要回到CS 101,不要在这里问。这是一个内部应用程序,不面向互联网,将由两个人使用,所以不,我真的相信SQL注入不是一个问题…我想我已经提到不要给我PDO讲座,我有理由这么说that@alexboorman没有理由。它们根本不存在。最小的理由是,您使用
ext/mysql
编写应用程序。你会为Windows95写一个应用程序吗?我不这么认为;)我不是为了谋生,它基本上是一个美化的excel电子表格,转换成一个web应用程序。它不是供公众使用的,我也不知道面向对象编程,所以学习一种全新的编码方法来完成一项相当简单的任务对我来说似乎是违反直觉的?如果你想帮助我解决我的原始问题,请尽管提,但我已经多次说过我对面向PDO或MySQLi的解决方案不感兴趣。@alexboorman无意冒犯,但在2013年你从未听说过OOP(独立于PHP)?关于您的问题:您应该能够简单地从我的答案中提取您需要的内容(这是一个只有2个占位符的简单查询;)。但就我个人而言,我对提供涉及第90种风格编码的答案感到不舒服。我知道OOP是什么,但我不使用它,因为正如我所说,这不是我的职业。我不是一个程序员,我是一个插图画家,我只知道我知道的我不怀疑学习OOP会开阔我的视野,但我不需要学习一些完全复杂的新的做事方式,只是为了完成一个简单的任务,当我不确定我是否会再次使用它的时候。我也不明白为什么你要花这么多时间批评我的做法,而我已经清楚地表明我有这样做的理由!我很感激你的尝试,但这对我来说很陌生。我不确定这在某些化身中是否有效,但我不知道如何使用它
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)