【发布时间】: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>和其他人中缺少引号。您应该(始终)将它们添加到value="WEEK">,然后对其余部分执行相同操作,然后再试一次。另外,在这里阅读plus2net.com/sql_tutorial/between-date.php -
我正在尝试提取上周、上个月或去年的记录......所以如果我指定 1 周,则在 4 月 25 日至 5 月 1 日之间,4 月 1 日至 5 月1 如果我选择月份等...... Fred 我试图将“”添加到值,但它仍然返回表中的所有行......就安全性而言,这不适用于生产或商业用途甚至在线使用。这是我试图完成的学习任务。我了解注射的风险。
-
你的表中是否有
data是一个月或一年后提交的 -
您不希望是
> NOW() - INTERVAL 1 $time。您是否试图提取上个月、一周、一年内的所有记录?你也回了$time看是否设置好了?