基于2个参数从MySQL数据库中选择

时间:2018-05-06 19:12:00

标签: php mysql reactjs

我的React应用程序中有两个变量:startDate和endDate,我想根据这些参数从数据库中获取数据,如下所示:

axios.get(`http://localhost/api/date?startDate=${startDate}&endDate=${endDate}`).then((response)
=> {
      this.setState(() => ({ data: response.data}));
    });

我正在使用MySQL数据库和PHP。

目前我的后端看起来像这样,你可以看到我只是从我的数据库表中选择所有:

<?php 
use \Psr\Http\Message\ServerRequestInterface as Request; 
use \Psr\Http\Message\ResponseInterface as Response;

$app = new \Slim\App;

// Get All Calendar Dates 
$app->get('/api/date', function(Request $request, Response $response){
        $sql = "SELECT * FROM datescalendar";

    try{
        // Get DB Object
        $db = new db();
        // Connect
        $db = $db->connect();

        $stmt = $db->query($sql);
        $dates = $stmt->fetchAll(PDO::FETCH_OBJ);
        $db = null;
        // return $response->withJson($dates);
        echo json_encode($dates);
    } catch(PDOException $e){
        echo '{"error": {"text": '.$e->getMessage().'}';
    } });

如何更改我的查询以根据我在React应用程序中的这两个参数从数据库表中进行选择?

1 个答案:

答案 0 :(得分:0)

使用BETWEEN运算符,如:

$sql = "SELECT * FROM `datescalendar` where `date` BETWEEN '{$start_date}' AND '{$end_date}'";

如果字段为Y-m-d,则日期必须采用datetime格式,则格式应为Y-m-d H:i:s