【问题标题】:pulling mysql data based on time period using php使用php根据时间段拉取mysql数据
【发布时间】:2014-05-02 02:59:59
【问题描述】:

我正在尝试从用户指定的时间在 1 周、1 个月或 1 年内的表中提取所有行。
这是我的查询:

$query=MYSQLI_QUERY($con, "SELECT * FROM `Customers` WHERE date < NOW() - INTERVAL 1 $time")or die(mysqli_error($con));

这是表格:

<select name="time">
    <option>-select-</option>
    <option value=WEEK>week</option>
    <option value=MONTH>month</option>
    <option value =YEAR>year</option>
</select></td>

这是我设置 $time 值的地方:

if (isset($_POST['submit'])) {
    $time = $_POST['time'];

问题是无论我指定什么,周、月或年,它都会返回数据库中的所有项目。
如何让它在指定的时间到期后停止查看?

【问题讨论】:

  • “时间在 1 周内” – 所以您的意思是所有 的记录都在一周以内?这意味着他们的日期将大于现在减去一周。顺便说一句,我希望你实际上没有使用这么幼稚的代码,因为这是一个很大的安全漏洞。
  • 一个促成因素可能是value=WEEK&gt; 和其他人中缺少引号。您应该(始终)将它们添加到 value="WEEK"&gt;,然后对其余部分执行相同操作,然后再试一次。另外,在这里阅读plus2net.com/sql_tutorial/between-date.php
  • 我正在尝试提取上周、上个月或去年的记录......所以如果我指定 1 周,则在 4 月 25 日至 5 月 1 日之间,4 月 1 日至 5 月1 如果我选择月份等...... Fred 我试图将“”添加到值,但它仍然返回表中的所有行......就安全性而言,这不适用于生产或商业用途甚至在线使用。这是我试图完成的学习任务。我了解注射的风险。
  • 你的表中是否有data是一个月或一年后提交的
  • 您不希望是&gt; NOW() - INTERVAL 1 $time。您是否试图提取上个月、一周、一年内的所有记录?你也回了$time看是否设置好了?

标签: php mysql


【解决方案1】:

查询不正确应该是 > 而不是

【讨论】:

    【解决方案2】:

    试试这个查询

    SELECT column_name(s)
    FROM table_name
    WHERE column_name BETWEEN date1 AND date2;
    

    【讨论】:

      猜你喜欢
      • 2015-07-27
      • 1970-01-01
      • 2012-02-01
      • 2014-04-18
      • 1970-01-01
      • 2020-06-22
      • 2016-02-13
      • 1970-01-01
      • 2018-03-16
      相关资源
      最近更新 更多