【问题标题】:Getting records between 2 dates someone chooses php mysql在有人选择 php mysql 的 2 个日期之间获取记录
【发布时间】:2011-06-29 08:46:51
【问题描述】:

我正在尝试获取两个日期之间的记录。日期以“yyyy-mm-dd”的形式输入到输入类型=“文本”中(例如,我将在文本输入中输入“2011-02-15”),然后发布到下一页查询:

$start = $_POST["start"];
$end = $_POST["end"];

$sql_query = "SELECT * FROM actionlist WHERE date>='{$start} 00:00:00'  AND date<='{$end} 23:59:59'   ORDER BY id";
$result = mysql_query($sql_query);

“actionlist”表中的记录有一个名为“date”的字段,这是在使用“$date = date('Y-m-d H:i:s')”创建记录时自动输入的。

无论如何,我似乎无法选择任何记录。我是否需要以某种方式处理我的 $start 和 $end 变量?提前致谢。

【问题讨论】:

    标签: php mysql date select post


    【解决方案1】:

    试试这个方法

    SELECT * FROM actionlist WHERE date BETWEEN 'start' AND 'end'
    

    【讨论】:

      【解决方案2】:

      你可以使用between来获取你想要的信息

      $sql_query = "SELECT * FROM actionlist WHERE date BETWEEN '$start' AND '$end' ORDER BY id";

      但是你需要确保 start 和 end 是有效的,并且已经被转义了等等,以防止 sql 注入等等

      【讨论】:

      • 谢谢。我想那真的是我的问题。你如何确保它们是有效的......另外,表格中的日期格式为 Y-m-d H:i:s,我只想能够输入 Y-m-d 部分......
      • 因此原始:$start 00:00:00 和 $end 23:59:59 而不仅仅是 $start 和 $end。非常感谢您的帮助。
      【解决方案3】:
      $start = mysql_real_escape_string(trim($_POST["start"]));
      $end = mysql_real_escape_string(trim($_POST["end"]));
      
      $sql_query = "SELECT * FROM actionlist WHERE date BETWEEN '".$start." 00:00:00' AND '".$end." 23:59:59' ORDER BY id";
      $result = mysql_query($sql_query) or die(mysql_error());
      

      编辑:如果您的输入表单中有一些不需要的空间,请使用 trim();然后有点卫生,并使用 BETWEEN,正如每个人都在我之前建议的那样(该死的我写得太慢了......)

      根据下面的评论编辑 2

      【讨论】:

      • @Andypandy 您是否尝试过 var_dumping $start 和 $end 以查看它们是否实际设置以及它们具有哪些值?可能听起来很傻,但有时这是最意想不到的事情..
      • 并使用 $result = mysql_query($sql_query) 或 die(mysql_error());检查查询是否有问题
      • =天才,andy=nincompoop。我有两个输入名称=“开始”。感谢和抱歉占用大家的时间!!!
      • ;) 它发生了,我在这些事情上浪费了好几天,很高兴你解决了你的问题!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-12
      • 2013-05-22
      • 1970-01-01
      • 2015-05-02
      • 2016-09-14
      • 2011-08-12
      相关资源
      最近更新 更多