繁体   English   中英

如何不花时间指定PHP MYSQL日期

[英]How to specify PHP MYSQL dates without time

这完美地工作:

SELECT DISTINCT customers 
FROM customertable 
WHERE time_paid BETWEEN '2016-06-28 10:27:55' AND '2016-07-05 14:07:51';

但是,由于我使用javascript datepicker来让用户选择日期时间段,并且只有日期,但是没有时间,这显然行不通:

SELECT DISTINCT customers 
FROM customertable 
WHERE time_paid BETWEEN '2016-06-28' AND '2016-07-05';

我的选择语句是这样的:$ t1是较低日期,而$ t2是较高日期。

$sql = "SELECT DISTINCT customertable FROM customer WHERE time_paid BETWEEN '$t1' AND '$t2'";

$result = mysqli_query($conn, $sql);
$rowcount = mysqli_num_rows($result);

有没有一种方法可以在我的select语句上插入连接日期,例如'$ t1'.12.00.00,以在选择时照顾数据库中完整的DATETIME条目?

  1. 永远不要在SQL语句中使用字符串插值。 这就是SQL注入攻击的发生方式。 请改用占位符。

  2. 修改javascript日期选择器生成的格式以包含时间。

和/或

  1. 如果日期字符串中不包含时间成分,则将其添加到日期字符串中。

如果日期中没有查询的时间值。

您可以将datetime值除以空间,然后检查是否有时间。

如果没有时间参数,则只需添加00:00:00和23:59:59。

请参阅以下示例:

function getCustomers($from, $to) {
  $from = explode(' ', $from);
  if(sizeof($from) != 2) {
    $from = $from[0]. ' 00:00:00';
  }

  $to = explode(' ', $to);
  if(sizeof($to) != 2) {
    $to = $to[0]. ' 23:59:59';
  }

   // re-parsing datetime values to prevent sql injection 
  $from = date('Y-m-d H:i:s', strtotime($from));
  $to = date('Y-m-d H:i:s', strtotime($to));

  $q =   
    "SELECT DISTINCT customers 
    FROM customertable 
    WHERE time_paid >= '".$from."' AND time_paid <= '".$to."'";

  // and so on...  
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM