星空2020 2022-02-26 20:07 采纳率: 64.1%
浏览 29
已结题

layui+php后台按时间段查询失败,该如何修改?

按时间段查询失败,把 查询语句“$data = $pdo->query("SELECT * FROM database where inputdate between '$startdate' and '$enddate' order by id desc limit $start, $limit")->fetchAll(PDO::FETCH_ASSOC);”中的 '$startdate' and '$enddate' 改成具体时间就可以正常获取数据。该如何修改?

前端代码

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>list</title>
        <meta name="renderer" content="webkit">
        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
        <link rel="stylesheet" href="./css/font.css">
        <script type="text/javascript" src="./lib/layui/layui.js" charset="utf-8"></script>
    </head>
<body>
 <input class="layui-input"  autocomplete="off" placeholder="开始日" name="startdate" id="startdate">
  <input class="layui-input"  autocomplete="off" placeholder="截止日" name="enddate" id="enddate">
 <button class="layui-btn" lay-submit="" lay-filter="sreach" id="searchBtn"><i class="layui-icon">&#xe615;</i></button>

  <!-- 数据表格开始 -->
  <table class="layui-hide" id="test1" lay-filter="test1"></table>
<script src="./layui/layui.all.js" charset="utf-8"></script>
  <script>
    layui.use('table', function () {
      var table = layui.table;
      var laydate = layui.laydate;
      var form = layui.form;
      var $ = layui.jquery;
      //绑定时间选择器
     laydate.render({
        elem:'#start'
      })
      laydate.render({
       elem:'#end'
      })
        
      var tableIns = table.render({
        elem: '#test1'
        ,url: './data1.php'
        ,toolbar: '#toolbarDemo' //开启头部工具栏,并为其绑定左侧模板
        ,title:'明细表'
        ,loading:true
        ,height:'full-100'
        ,cols: [
          [
            {field: 'id', title: 'ID', sort: true, style: 'font-size:12px'}
          , {field: 'inputdate', title: '时间', align:'center', width: 150, sort: true,style: 'font-size:12px' }
          , {field: 'sn', title: 'SN', align:'center', width: 150,sort: true,style: 'font-size:12px'}
          ]
        ],
        where:{
        }
        , page: true
        , limits: [50,100,150,200,250,300,350,400,450,500]
        , limit: 50 //每页默认显示的数量
      });

     //搜索 
      $("#searchBtn").on('click',function(){
        var val = $("#searchReload").val();
        console.log(val);
        tableIns.reload({
          where: { 
            inputdate:val
          }
          ,page: {
            curr: 1 //重新从第 1 页开始
          }
        });
      })
    });
  </script>
    
    
    <script>
    layui.use('laydate', function(){
        var laydate = layui.laydate;
        var endDate= laydate.render({
            elem: '#enddate',//选择器结束时间
            type: 'datetime',
            min:"1970-1-1",//设置min默认最小值
            done: function(value,date){
                startDate.config.max={
                    year:date.year,
                    month:date.month-1,//关键
                    date: date.date,
                    hours: 0,
                    minutes: 0,
                    seconds : 0
                }
            }
        });
        //日期范围
        var startDate=laydate.render({
            elem: '#startdate',
            type: 'datetime',
            max:"2099-12-31",//设置一个默认最大值
            done: function(value, date){
                endDate.config.min ={
                    year:date.year,
                    month:date.month-1, //关键
                    date: date.date,
                    hours: 0,
                    minutes: 0,
                    seconds : 0
                };
            }
        });
 
    });
</script>

  </div>
</div>
</body>
</html>

后台php

<?php
header('Content-type:text/html;charset=utf-8');
// 连接数据库
try {
  $pdo = new PDO('mysql:host=10.127.0.01;dbname=db;port=3306', 'root', '123456');
} catch (PDOException $e) {
  die('connet error :' . $e->getMessage());
}
$pdo->exec('set names utf8');


if (isset($_GET['page']) && isset($_GET['limit'])) {
  // 分页查询
  $start = ($_GET['page'] - 1) * $_GET['limit'] ;
  $limit = $_GET['limit'];
 //查询条件
  $startdate = strtotime($_POST['startdate']);
  $enddate = strtotime($_POST['enddate']);
  $data = $pdo->query("SELECT * FROM database where inputdate between '$startdate' and '$enddate'  order by id desc limit  $start, $limit")->fetchAll(PDO::FETCH_ASSOC);
  $num = count($pdo->query("SELECT id FROM bga_rework")->fetchAll(PDO::FETCH_ASSOC));
  $json = json_encode(array(
    "code" => 0,
    "msg" => "",
    "count" =>  $num,
    "data" => $data
  ), JSON_UNESCAPED_UNICODE); 
  echo $json;
  
} 
else {
  // 无参数
  echo json_encode(array(
    "code" => 1,
    "msg" => "error",
    "count" =>  0,
    "data" => array()
  ));
}

  • 写回答

1条回答 默认 最新

  • 三只小菜猿 PHP领域新星创作者 2022-02-27 10:18
    关注

    '$startdate' and '$enddate' 去掉引号或者重新拼接一下,这两个应该是被识别成字符串了而不是参数

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 3月7日
  • 已采纳回答 2月27日
  • 创建了问题 2月26日

悬赏问题

  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?
  • ¥100 求三轴之间相互配合画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了