所以我使用php框架(https://www.slimframework.com/)对于一个简单的api,我需要在我的react应用程序中使用,我无法让我的查询使用这些参数,因为$start\u date和$end\u date不会从get请求返回任何内容。这个mysql查询的工作原理和它应该的一样,我已经用我的react应用程序返回的startdate和enddate对它进行了测试,问题是我无法弄清楚如何从这些get请求将数据返回到我的$start\u date和$end\u date变量。
这就是我的后端的样子(slimframework):
<?php
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;
$app = new \Slim\App;
$app->get('/api/date', function(Request $request, Response $response){
$start_date=date('Y-m-d H:i:s', $_GET['startDate']);
$end_date=date('Y-m-d H:i:s', $_GET['endDate']);
// $start_date = $app->request()->params('startDate');
// $end_date = $app->request()->params('endDate');
// $start_date = $request->getAttribute['startDate'];
// $end_date = $request->getAttribute('endDate');
$sql = "SELECT * FROM `datescalendar` where `date` BETWEEN '{$start_date}' AND '{$end_date}'";
// $sql = "SELECT * FROM `datescalendar` where `date` BETWEEN '1525679047' AND '1526283847'";
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应用程序中从api获取数据的方式:
fetchNewDatesNext() {
const startDate = this.state.startDate.unix();
const endDate = this.state.startDate.add(1, 'week').unix();
axios.get(`http://localhost/api/date?startDate=${startDate}&endDate=${endDate}`).then((response) => {
this.setState(() => ({ data: response.data}));
});
};
当我从数据库中一次查询所有内容时,应用程序工作正常( $sql = "SELECT * FROM datescalendar
)
有什么想法吗?
4条答案
按热度按时间jaql4c8m1#
还要注意这个查询,它很容易受到sql注入的攻击。你必须使用事先准备好的陈述。看到了吗https://phpdelusions.net/pdo#prepared
r8xiu3jd2#
我刚刚发现问题出在我的react应用程序端逻辑上,这些参数是如何改变的。我得到了有效的参数,但不是正确的一周。因为我当时只从api获取了1周的数据,所以我没有在正确的一周内获取数据。不管怎样,谢谢你的帮助!
另外,为我获取查询参数的正确方法是:
iqxoj9l93#
试着和你的情人在一起
\Request
苗条阶层,比如:$paramValue = $app->request()->params('paramName');
.你可以在这里阅读更多关于slimv2的文档
bfhwhh0e4#
我想你的请求是空的