Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用日期范围获取数据的MySQL查询_Php_Mysql_Sql_Mysql Workbench_Daterangepicker - Fatal编程技术网

Php 使用日期范围获取数据的MySQL查询

Php 使用日期范围获取数据的MySQL查询,php,mysql,sql,mysql-workbench,daterangepicker,Php,Mysql,Sql,Mysql Workbench,Daterangepicker,此查询在MySql workbench中给出了正确的结果- SELECT tbl_visit_info.visitor_id,tbl_visit_info.retailer_id,tbl_retailer.retailer_shop_name, SUM( IF( tbl_visit_info.activity_type = 1 ,1,0)) AS feedback, SUM( IF( tbl_visit_info.activity_type = 2 ,1,0)) AS promise_ord

此查询在MySql workbench中给出了正确的结果-

SELECT tbl_visit_info.visitor_id,tbl_visit_info.retailer_id,tbl_retailer.retailer_shop_name,
  SUM( IF( tbl_visit_info.activity_type = 1 ,1,0)) AS feedback,
SUM( IF( tbl_visit_info.activity_type = 2 ,1,0)) AS promise_order,
SUM( IF( tbl_visit_info.activity_type = 3 ,1,0)) AS stock,
SUM( IF( tbl_visit_info.activity_type = 6 ,1,0)) AS payment,
tbl_visit_info.date as visit_date
FROM tbl_visit_info,tbl_retailer 
where tbl_visit_info.retailer_id=tbl_retailer.retailer_id 
and tbl_visit_info.visitor_id=80
group by visitor_id,retailer_id 
having date_format(tbl_visit_info.date, '%Y-%m-%d') BETWEEN '2018-07-01' AND '2018-09-02';
但是,当我想传递变量来代替80和date range作为变量时,它不会给出任何结果。疑问是-

SELECT tbl_visit_info.visitor_id,tbl_visit_info.retailer_id,tbl_retailer.retailer_shop_name,
  SUM( IF( tbl_visit_info.activity_type = 1 ,1,0)) AS feedback,
  SUM( IF( tbl_visit_info.activity_type = 2 ,1,0)) AS promise_order,
  SUM( IF( tbl_visit_info.activity_type = 3 ,1,0)) AS stock,
  SUM( IF( tbl_visit_info.activity_type = 6 ,1,0)) AS payment
  FROM tbl_visit_info,tbl_retailer
  where tbl_visit_info.retailer_id=tbl_retailer.retailer_id
  and tbl_visit_info.visitor_id='".$_GET["sr_id"]."'
  group by visitor_id,retailer_id having date_format(date, '%Y-%m-%d') BETWEEN 
  '".$_GET["start_date"]."' AND '".$_GET["end_date"]."'"

当我用PHP编写代码时,此查询没有给出任何结果。

您应该在where子句中使用日期过滤器,而不是使用having:

SELECT tbl_visit_info.visitor_id,tbl_visit_info.retailer_id,tbl_retailer.retailer_shop_name,
  SUM( IF( tbl_visit_info.activity_type = 1 ,1,0)) AS feedback,
  SUM( IF( tbl_visit_info.activity_type = 2 ,1,0)) AS promise_order,
  SUM( IF( tbl_visit_info.activity_type = 3 ,1,0)) AS stock,
  SUM( IF( tbl_visit_info.activity_type = 6 ,1,0)) AS payment
  FROM tbl_visit_info,tbl_retailer
  where tbl_visit_info.retailer_id=tbl_retailer.retailer_id
  and tbl_visit_info.visitor_id='".$_GET["sr_id"]."' 
  and date_format(date, '%Y-%m-%d') BETWEEN 
  '".$_GET["start_date"]."' AND '".$_GET["end_date"]."'"
  group by visitor_id,retailer_id

$\u-GET[“start\u-date”]
$\u-GET[“end\u-date”]
inca的格式是什么?请告诉我们您的$\u-GET[“start\u-date”]和$\u-GET[“sr\u-id”]值和$\u-GET[“sr\u-id”]值?请不要通过将字符串连接在一起创建SQL查询。您应该始终使用参数化查询,否则SQL注入会带来严重的安全风险。请阅读-总结是,这不是解决志愿者问题的理想方法,可能会对获得答案产生反作用。请不要将此添加到您的问题中。