[英]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条目?
永远不要在SQL语句中使用字符串插值。 这就是SQL注入攻击的发生方式。 请改用占位符。
修改javascript日期选择器生成的格式以包含时间。
和/或
如果日期中没有查询的时间值。
您可以将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.